"Three thousand lives of non-smokers can be saved yearly through limiting of the tobacco use. There is no other law that could save so many lives," said Andrija Hebrang, deputy of the ruling conservatives.
The legislation allows a six month transitory period for bars, restaurants and the tobacco industry to conform to it.
After that, smoking at bars will only be allowed on terraces, while restaurants can allocate a separate room for smokers - but the establishments cannot serve food or drink in these areas.
A warning about health risks caused by smoking will have to cover 40 percent of the back of a cigarette pack, the legislation stipulates.
Fines of up to 2,100 euros (2,800 dollars) for individuals and up to 21,000 euros for entrepreneurs will be imposed on those violating the smoking ban.
The health ministry estimated that tobacco kills some 10,000 people every year while an additional 3,000 die from passive smoking in Croatia, where 32 percent of the country's 4.4 million population are smokers.
Health costs of treating the consequences of smoking are estimated at a significant 422 million euros (589 million dollars) annually.
Croatia already had laws banning smoking in health and education facilities, and marking out separate smoking areas in other public spaces. But the rules have often been ignored, notably in bars, restaurants and offices.
While hailed by non-smokers, the new legislation has already sparked controversy in the country whose economy heavily relies on the tourism industry.
Bar and restaurant owners, in particular have protested strongly, claiming it will seriously affect their business.
The Balkans are home to Europe's most inveterate smokers, with 30 to 40 percent of all adults hooked on a habit considered a major cause of premature death, according to the World Health Organisation.