Swiss voters have overwhelmingly approved tougher regulations on asylum seekers as well as new limits on immigration for people from outside the European Union.
But an initiative to prop up the country's ailing old-age pension scheme with profits from the National Bank failed to win a majority at the ballot box.
Around 68 per cent of voters endorsed amended laws on asylum and immigration in Sunday's vote, according to official results. All 26 cantons were also behind the measures, which were approved last year by parliament.
The United Nations Refugee Agency, which had criticised the new asylum legislation, said Switzerland's laws would now be among the toughest in Europe.
The staunchest supporters of the new laws were in rural areas of German-speaking central and eastern Switzerland. The majorities in French-speaking regions were lower, as is normally the case with votes pertaining to foreigners.
Turnout was above average at 48 per cent.
A coalition of centre-left parties, trade unions, churches and aid organisations had forced the vote, arguing that the reforms went against Switzerland's humanitarian tradition.
But they failed to undermine the government's argument that harsher measures against asylum abuses were necessary to avoid social tension and provide protection for those fleeing persecution.
The government said it was pleased with the outcome of the vote.
"It is not my victory, but it is an important decision," said Justice Minister Christoph Blocher, who was at the forefront of the reform.
He added that the new measures would be strictly implemented without delay.
Opponents of the reform, led by former Interior Minister Ruth Dreifuss, did not hide their displeasure.
"We are disappointed but not discouraged," Dreifuss said, adding that she hoped for a humane application of the new laws.
The pension fund proposal was rejected by over 58 per cent of voter and all but three cantons, Geneva, Basel City and Ticino.
Finance Minister Hans-Rudolf Merz said a clear majority of voters had obviously understood that the plan by the centre-left Social Democrats and the trade unions was not sustainable and failed to tackle the structural problems of the state old age pension system.
However, Rudolf Rechsteiner, a Social Democratic parliamentarian who was the driving force behind the initiative, said he would not give up the fight despite Sunday's defeat. He vowed to block any efforts to weaken the main pillar of Switzerland's social security system.
The proponents wanted to use part of the annual profits of the National Bank to plug expected shortfalls in the state pension scheme, which is facing huge deficits because of the country's ageing population.
Currently the money is divided between the country's 26 cantons (two-thirds), and the federal government.
The cabinet also pledged to contribute SFr7 billion ($5.66 billion) from the one-off sale of excess gold reserves to the old-age pension benefits.
swissinfo, Urs Geiser
It is the ninth time since 1984 that Switzerland's asylum law has been amended. Five of the proposals to tighten the regulations were approved in nationwide votes.
Under a bilateral treaty agreed with Brussels, EU citizens are not subject to immigration restrictions. But there is a sizeable community of people from Balkan countries and Turkey living in Switzerland.
The old age pension scheme is the central pillar of the country's social security system, which is funded by contributions from employers, employees and the state. It aims to provide minimum coverage for all people over 65 (men) and 64 (women).
Asylum law: 67.7% yes, 32.3% no
Immigration law: 68% yes, 32% no
Pension fund: 41.7% yes, 58.3% no