Almost 60% of voters supported the proposal
The people of Switzerland have voted to continue allowing in workers from the EU and to extend access to two new member states, Romania and Bulgaria.
Official referendum results showed that almost 60% of voters had supported the proposal.
Right-wing politicians had warned that extending access could bring an influx of cheap labour at a time of recession.
Switzerland remains outside the EU - but its political and economic ties to Europe are very close.
The BBC's Imogen Foulkes in Berne said that a "no" to free movement could have put that relationship at risk.
Since the Swiss first introduced free movement of labour the number of EU citizens working in Switzerland has risen to over a million.
Supporters of the government proposal to extend access said that free movement rules had helped attract skilled workers to Switzerland.