The new law passed with 296 votes in favour, 92 against and 15 abstentions.
Italian Health Minister Beatrice Lorenzin hailed the results as providing “a shield for our children against very serious diseases that are still among us”.
Lorenzin's measure has been fervently opposed by so-called anti-vax groups, who want "freedom of choice" on vaccinations on the grounds that they may have severe counter- effects.
Anti-vax protesters gathered outside Parliament carrying signs which read “Don’t touch our children”, and shouting at lawmakers as they entered the building.
According to official health data, measles vaccination rates in Italy have dropped to around 87 per cent, and 3,672 people have caught the potentially deadly virus in the January 1-July 16 period, compared to 522 in the same period in 2016.
Under the new law, parents must present proof of vaccinations to gain admission into preschools, while parents of children of mandatory school age face fines of up to €500 ($736) for not complying.
The law covers 10 vaccinations, including diphtheria, tetanus, measles, mumps, rubella and chicken pox.
Lawmakers dropped two diseases from the initial list of 12, meningococcal B and meningococcal C.