Chancellor Alexander Schallenberg said the lockdown would come into force from Monday and that it was "necessary" to stem the country's record surge in cases.
The measure will affect about 35 per cent of Austrians, more than three million people.
It means those aged over 12 who are not vaccinated or cannot show that they have recently recovered from Covid-19 will not be allowed to leave their houses except for reasons such as buying essential supplies, exercise or seeking medical care.
The lockdown will for 10 days be enforced with random spot checks and increased police patrols. It will then be reviewed, the government said.
Those who break the rules could be fined €500 ($572), while those who refuse to show proof that they are vaccinated or have recently recovered can be fined three times as much.
The main committee of Parliament approved the lockdown late on Sunday.
Mr Schallenberg again called for those who have not yet been vaccinated to get their shots. About 65 per cent of the population is fully vaccinated, a rate that the chancellor described as “shamefully low.”
“We really didn’t take this step lightly and I don’t think it should be talked down,” Mr Schallenberg told Oe1 radio. “This a dramatic step — about 2 million people in this country are affected … what we are trying is precisely to reduce contact between the unvaccinated and vaccinated to a minimum and also contact between the unvaccinated.”
“My aim is very clearly to get the unvaccinated to get themselves vaccinated and not to lock down the vaccinated. In the long term, the way out of this vicious circle we are in — and it is a vicious circle, we are stumbling from wave to lockdown, and that can’t carry on ad infinitum — is only vaccination.”
The lockdown comes as other European governments consider similar measures after the region became the global centre of the pandemic once more.
In the Netherlands, Prime Minister Mark Rutte announced on Friday at least three weeks of lockdown measures for restaurants, shops and sporting events to curb a record surge in coronavirus infections.
Germany has raised the prospect of new measures after the infection rate rose to its highest level in the country since the start of the pandemic.
The three parties in talks to form a coalition said they aim to tighten measures to tackle the spread and will present their plan to Parliament on Thursday.
On Saturday, German Chancellor Angela Merkel urged unvaccinated people to reconsider their decision in a video message on Saturday as cases increased to more than 50,000.
"Difficult weeks lie ahead of us and you can see that I am very worried," Mrs Merkel said, speaking in her weekly video podcast. "I urgently ask everyone who has not yet been vaccinated: please reconsider."
The threat of new restrictions has also apparently fuelled anti-vaccine scepticism across the continent.
Doctors in Germany have reported an increase in abuse against staff in clinics, with additional threats of violence coming from anonymous letters.
"The aggression and extremism among people has become significantly worse," said Erik Bodendieck, chairman of the Saxony Medical Association told DW News. "Some doctors have even received death threats."
In Austria, hundreds gathered outside the chancellery for the lockdown announcement in a noisy protest, waving banners that read "No to mandatory vaccination" and "Our body, our freedom to decide".
"We must fight back now," Sarah Hein, 30, an unvaccinated hospital worker, told AFP. "We want to work, we want to help people but we don't want to vaccinate ourselves because this is simply our decision."
The government on Friday announced that vaccinations would become mandatory for health workers.
Under current rules, unvaccinated people are banned from restaurants, hotels and cultural venues unless they can show they have recently recovered from the disease.
"Healthy people are being locked up," another demonstrator said.
Vienna is further toughening rules, requiring PCR tests as well as being vaccinated or having recovered from the virus to be allowed to attend events of more than 25 people or visit bars or restaurants in the evening.
Also from Monday, the capital is becoming the first region in the EU to offer shots for children aged between 5 and 11 at a vaccination centre.
Appointments were booked for more than 5,000 children when registration opened on Saturday, the city said.
The European Medicines Agency has not yet issued an authorisation for any of the vaccines to be used for this age group, although member states can do so in a public health emergency.
About 11,700 people infected with the coronavirus have died in Austria. Daily cases hit a record high of more than 13,000 new infections on Saturday.