In a stormy, two-hour vote on Thursday, the Parliament backed the so-called services directive, which is designed to remove restrictions on providing services across the 25-nation bloc and open it up to cross-border competition.
The bill pitted protectionists and trade unionists, who feared it would threaten workers' rights, against free-marketeers, who argued it could unlock new markets and help boost Europe's fragile economic recovery.
In a compromise, lawmakers removed a clause that would have allowed companies to use the rules of their home country in setting up shop in another EU nation.
The "country of origin" principle had led to fears in Western Europe that unscrupulous firms from countries with weaker labour rules would seek to apply those regulations in setting up businesses in countries like Germany, which has a strong tradition of labour rights.
The issue had led to an ideological rift in Europe and may have contributed to the "no" votes in the French and Dutch referendums on the European Constitution eight months ago.
"We managed to turn this directive upside down. We managed to focus on the social protection of our citizens"
German Socialist MP
The lawmakers also trimmed down the number of sectors the legislation would cover, but retained the fundamental principles of the bill, obliging the 25 nations to ensure free access to service activities on their territory.
"We managed to turn this directive upside down. We managed to focus on the social protection of our citizens," said German Socialist Evelyne Gebhardt, who was charged with steering the bill through the legislature.
The host country will not be allowed to impose discriminatory measures on the provider, according the new rules. But governments gain numerous opt outs. They can use public security or environmental reasons to prevent service providers from low-cost states from setting up in their countries, for example.
Services - which can include everything from renting a car to hiring an architect - make up the most dominant economic sector in the EU, accounting for two-thirds of the bloc's economic output. Last year, 116 million people - nearly 70% of the EU's active work force - were employed in the service sector.
The bill excludes social services
like public transport
The idea of a single services market spanning all its member states was one of the founding ideas of the European Union. But nearly 50 years later, firms still face major obstacles when they try to set up a branch in another EU country.
For example, a French company seeking to set up a branch in Greece would run into trouble with a Greek law that requires all diving instructors to speak Greek - even if their clients don't.
The European Commission said it would use the final vote for a new, final version of the bill - its third version - and would publish it by the end of April. EU member states would then need to back it before it becomes law.
The version approved by the EU assembly excludes social services, such as care for the elderly or handicapped, health care, gambling, public transportation, including port services, temporary agencies, and many other sectors.
This was opposed by deputies from the EU's 10 newest countries, many of which voted against the bill because they did not consider it liberal enough, even though it significantly improves the chances of companies from the new member states, mostly poorer former Communist countries, to provide services in Western Europe.