The Swiss cabinet said it had decided to invoke a "safeguard clause" in its agreement with the European Union on the free movement of persons, reimposing quotas that were abolished a year ago for citizens from central and eastern Europe.
"In invoking the safeguard clause, the Federal Council is seeking to apply one of the means at its disposal to control the immigration flow into Switzerland," it said in a statement.
The government is imposing a quota of 2,000 permits for the year from 1 May for citizens from Estonia, Latvia, Lithuania, Poland, Slovakia, Slovenia, the Czech Republic and Hungary compared to the 6,000 permits granted in the last year.
The government said the 1.1 million EU citizens in the country of 7.9 million benefited the economy, but added the rate of immigration was raising concerns over issues of integration and compliance with minimum wage and working conditions.
Switzerland, which has managed to keep unemployment at a low 3 percent despite recent economic turbulence, has seen a big influx in immigrant workers from the EU in recent years.
The right-wing Swiss People's Party has blamed immigration for pushing up rents, overcrowding public transport and eroding cultural values and is seeking to amend the constitution to set annual quotas on permits granted to foreigners.