A key bilateral accord with the European Union on open labour markets has won a clear majority at the ballot box.
Rightwing parties, which forced the nationwide vote, suffered a defeat on Sunday as nearly 60 per cent of voters backed the government and a broad alliance of parties, organisations and the business community.
Official results show 59.6 per cent of the electorate approving a proposal to continue a labour accord with 25 EU states and at the same time extend the agreement to the newest members Bulgaria and Romania.
Turnout was just under 51 per cent, which is above average for nationwide votes in general, but lower than in the last two previous votes on relations with EU – Switzerland's main trading partner.
Opponents of the labour accord only won a majority in four out of the country's 26 cantons.
Urban regions and all of the French-speaking cantons voted in favour, but - as expected - the Italian-speaking Ticino and three cantons in the majority German-speaking part came out against.
The government had described the labour accord as crucial for the Swiss economy. Rejection would increase insecurity for the country's key export sector, Economics Minister Doris Leuthard warned ahead of Sunday's ballot.
Foreign Minister Calmy-Rey stressed that stability and good relations with the EU were vital in times of economic uncertainty.
The government pointed out the experience of the past six years had shown the importance of open labour markets for Swiss companies.
With 490 million consumers, the EU is Switzerland's most important trading partner.
Loss of sovereignty
Rightwing parties had argued the labour accord - and in particular its extension to Bulgaria and Romania – would lead to lower salaries, more jobless, more crime and loss of sovereignty.
The Swiss People's Party criticised the vote as undemocratic, because two issues had been lumped into one ballot.
Parliament last year voted to combine the vote on extension to the two southeastern European countries with the continuation of the labour accord with the other 25 EU members.
A majority in parliament said the two issues had to be taken together as Brussels would not tolerate discrimination against Bulgaria and Romania.
The run-up to Sunday's ballot was marked by mutual accusations and a war of words over the likely impact of the vote result.
Both sides invested considerable funds in newspaper advertisements and poster campaigns. Cabinet ministers also had a strong presence in the media.
The rightwing Swiss People's Party, which opposes the labour accord, had some prominent dissidents among its ranks. The party leadership initially was against forcing a referendum, but later changed its stance.
swissinfo, Urs Geiser
Sunday's ballot is the third on a labour accord with EU in nine years.
In 2005 a 56% majority approved the extension of the treaty to ten new member states mainly in eastern Europe.
The first vote in 2000 on the labour accord, which is part of a package of seven bilateral treaties, won a 67% majority at the ballot box.
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.