Problems found by inspections included poor quality of food, hygiene, and menus, as well as administrative issues.
A total of 2,678 checks were carried out between 2015 and 2016, with 670 canteens failing to meet standards, Panorama reported on Monday.
Italy's Health Minister, Beatrice Lorenzin, presented the results of the checks carried out by Italy's health police, Nas, and has promised more will be done to improve the food being dished up to schoolchildren.
"Controls will be intensified and surprise inspections will carried out," Lorenzin was reported as saying.
The minister also announced a task force would be set up in order to "monitor the safety of food served in school canteens," adding she would carry out spot checks herself.
Some 37 canteens were shut down altogether, all but one of them in the south of the country, and police seized a total of 4,264 kilos of unsafe food.
More than 100 people were handed over to judicial authorities and a further 487 to administrative authorities; in total, the closures and confiscations cost €13 million.
Problems with hygiene made up the bulk of the cases, with the report citing dirty work surfaces, stale, poorly preserved and badly labelled foods, as well as quality standards not being met, for example Class B chicken instead of Class A or the wrong kind of olive oil.
More serious problems included food which could be harmful to health, with expired yoghurt and mouldy bread both found in more than one school, while in eight schools, staff flouted smoking bans in the kitchen.
In Milan, one primary school canteen had 36,500 items of crockery confiscated because they were found to contain fluorine, and in Naples, the administrator of a school meal service was reported for providing the school with "altered or harmful" foods, thought to be the cause of an outbreak of food poisoning.