Swiss voters have approved a proposal to continue and extend a key labour accord with the European Union.
Final results show 59 per cent backing for the free movement of workers. A no vote could have threatened relations with the EU - Switzerland's main trading partner.
Turnout was 51 per cent.
Opponents of the accord, notably from rightwing political parties, only won majorities in four out of 26 cantons.
At stake was an agreement between Switzerland and 25 EU member states to grant mutual access to labour markets. At the same time voters had the final say on an extension of the accord to the latest EU members, Bulgaria and Romania.
The Swiss government, three of the four main political parties, the business community, as well as the Organisation of the Swiss Abroad have come out in favour of the agreement.
"The labour accord is crucial for the Swiss economy and a rejection would increase insecurity for our key export sector," said Economics Minister Doris Leuthard ahead of Sunday's vote.
The experience of the past six years had shown the importance of open labour markets in enabling Swiss companies to keep their competitive edge, she said.
The accord has helped boost the Swiss economy by at least one per cent, according to the government.
Foreign Minister Calmy-Rey stresses that stability and good relations with the EU are vital in times of economic uncertainty.
The labour accord came into force in 2002 as part of a set of seven bilateral trade, transport and labour agreements. They would be nullified after a no vote on Sunday.
"Switzerland stands to lose more than the EU," Calmy-Rey said. The country would not be in a strong position to renegotiate the treaties and could face increased pressure over tax matters, she says.
"A no vote would be a disaster for Swiss companies. The EU is our most important trading partner and has about 490 million consumers," according to Leuthard.
Rightwing parties, which forced the nationwide ballot, argued the labour accord - and in particular its extension to Bulgaria and Romania - was bad news for Switzerland.
"In a recession it means lower salaries, more jobless, more crime and loss of sovereignty," said Hans Fehr of the rightwing Swiss People's Party and a leading member of the anti-European group, Campaign for an Independent and Neutral Switzerland.
"More people will plunder our welfare system," warned party president Toni Brunner.
Opponents have described the vote as "undemocratic". Parliament last year voted to combine the vote on extension to the two southeastern European countries with the confirmation of the labour accord with the other 25 EU members.
"Voters can only give one answer to two separate questions. This is unconstitutional and undermines our democracy," said Fehr.
A majority in parliament said the two issues had to be taken together as Brussels would not tolerate discrimination against Bulgaria and Romania.
It is the third ballot on the labour treaty since 2000 – when it was part of a series of seven bilateral treaties. In 2005 voters approved its extension to member states, mainly in eastern Europe.
Both sides ran expensive campaigns ahead of Sunday's ballot but it appears these left many citizens rather confused.
"Parties seem to have mobilised primarily among their own grassroots," says Georg Lutz, political scientist at Lausanne University.
The final week of campaigning was marked by a row over a website calling on unemployed Germans to emigrate to Switzerland and an announcement by a People's Party parliamentarian threatening to take the foreign minister to court for alleged voter coercion.
Lutz agrees that the vote is pivotal for Switzerland on an economic and a political level. He also points out a party political aspect.
"The People's Party would have to reconsider its foreign policy positions if it suffers a clear defeat."
Over the past few months the party leadership has changed its mind after initially refusing to back the referendum. But several senior People's Party parliamentarians have openly challenged those opposed to the labour treaty.
swissinfo, Urs Geiser
Votes and elections took place in many of the country's 26 cantons and on a local level this weekend.
About 4.9 million Swiss were eligible to vote on Sunday, including some 120,000 registered Swiss expatriates.
As a rule nationwide votes take place four times a year.
Voters on Sunday approved continuing the labour accord with 25 EU states and extending it to the two latest EU members, Bulgaria and Romania.
A previous vote in 2005 on extending the treaty to ten new member states in eastern Europe won a 56% majority at the ballot box.
Voters first approved the labour treaty with the old 15 EU member states with a 67% majority in 2000. It took effect from 2002.
Switzerland and EU
Switzerland is not a member of the EU but it has concluded 20 major bilateral agreements with the 27-nation bloc.
There are also about 100 secondary bilateral accords between Bern and Brussels.
Negotiations are underway for a bilateral treaty aimed at regulating access to cross-border electricity and a free trade accord on agriculture.
In 1992 voters rejected a plan to join the European Economic Area (EEA), a halfway house to full EU membership.