The new restrictions also include a maximum attendance of 1,000 people at culture and sports events, stopping short of the sweeping lockdowns in neighbouring Austria and Slovakia, where infection rates are even higher.
Just hours after the new restrictions were announced, the presidential office said President Milos Zeman was taken to hospital after testing positive for the coronavirus, although local media reported he showed no symptoms.
This was less than half a day after the 77-year-old leader left the hospital following a 46-day treatment for an unrelated chronic condition.
The Czechs registered more than 25,000 new cases, a record, on Tuesday, and an average of 1,516 daily COVID-19 cases per million population over the past week, the third highest in the world behind Slovakia and Austria, according to Our World in Data.
Health Minister Adam Vojtech said daily infections and hospital admissions were likely to rise further, but the government hoped the new measures would prevent the need for tougher restrictions.
The limits on pubs and events come on top of earlier restrictions that already bar people who have not been vaccinated or recovered from COVID-19 from places including pubs, restaurants, cinemas, hairdressers and gyms.
"Let's wait 10 days and then we can potentially adjust the measures," Vojtech said after the government declared a 30-day state of emergency to put the measures in place.
Many hospitals have cancelled non-urgent care to reserve capacity for coronavirus patients, and some, especially in the country's south-east near borders with Slovakia and Austria, reported they were overflowing.
Helicopters and a special ambulance bus took 19 patients on Thursday from the eastern city of Brno to hospitals in the capital Prague, 200 km (120 miles) away.
The Prague Motol University Hospital took seven of them.
"We now have 110 patients, about half of them are in a serious or semi-serious condition and...two thirds of them are not vaccinated," Motol Director Miroslav Ludvik told reporters.
Prime Minister Andrej Babis - who is due to hand over to a new administration in several weeks - said the government was in favour of mandatory vaccination of people aged over 50 or 60 as well as selected professions, and it could be approved next week.
The incoming government has, however, spoken against vaccine mandates.
The Czech Republic has vaccinated 58.5% of the total population, below the EU average of 65.8%, according to the European Centre for Disease Prevention and Control.
Health ministry data showed that 70% of patients in intensive care were unvaccinated. There were nearly 6,000 coronavirus patients in hospitals and around 850 in intensive care, the data showed.