Swiss voters have agreed by a majority of 56 per cent to extend a labour accord with the European Union to the ten new EU member states.
The result was clearer than expected, and represents a victory for the government. German- and French-speaking areas of the country voted "yes", while Italian-speaking Ticino said "no".
Only seven of the country's 26 cantons said no to extending the free movement of people accord, including the southern canton of Ticino.
Approval of the accord was particularly strong in western Switzerland.
Final results showed 56 per cent of voters approving the agreement with 44 per cent against.
Turnout was above average at 54 per cent.
Ahead of the vote supporters argued that opening up the labour market would result in economic growth, while opponents said it would lead to a flood of immigrants.
Sunday's ballot was the second nationwide vote on Swiss-EU relations this year. In June the electorate came out in favour of closer security and asylum cooperation with Brussels.
Bern and Brussels concluded a first set of treaties in 1999, which included a gradual opening up of their respective labour markets. The deal came into force in 2002.
With the enlargement of the EU to 25 members in 2004 Switzerland had to negotiate an agreement with the ten new members, mainly eastern European countries.
The Swiss parliament approved the deal, but small parties on the far-right and left of the political spectrum challenged the decision to a nationwide vote. They were supported by the rightwing Swiss People's Party.
Under the accord, Switzerland and the new EU member countries will grant mutual access to their labour markets but only after a period of transition which will include the use of quotas.
Parliament has also endorsed a set of additional measures aimed at preventing a massive influx of cheap labour from undercutting salary levels.
Boost or threat?
Supporters of the free movement of people said the labour accord would secure jobs in Switzerland and keep the country attractive for foreign investors and Swiss companies.
The government warned that rejection of the deal would damage Switzerland's image and seriously hinder the country's export-driven economy.
The business community, the trade unions and three of the four leading parties all came out in favour of the accord.
Opponents expressed fears about rising unemployment, currently at 3.6 per cent, if Switzerland opens its market to the 75 million citizens from the new EU member countries.
There were also widespread concerns about salary dumping as a result of increased competition and that the country's social-security system could become overburdened.
swissinfo with agencies
Yes: 1,457,355 votes (55.95%).
No: 1,147,236 votes (44.05%).
The extension of the treaty on the free movement of people was supported by 16 cantons and three half cantons.
It was rejected by four cantons and three half cantons.
A labour accord between Switzerland and the EU is to be gradually extended to the ten new member states in eastern Europe.
The group is made up of the three Baltic republics (Latvia, Lithuania, Estonia), Poland, the Czech Republic, Slovakia, Hungary, Slovenia, Malta and Cyprus.
The Swiss parliament also approved a series of measures to prevent salary dumping and an undercutting of labour standards.