Critics said the bill had been so heavily-watered down that many abuses may still go unpunished.
Italian lawmakers on Wednesday finally passed a bill making torture a crime under national law, after years of parliamentary back and forth.
Rome signed the UN Convention Against Torture in 1984 but had never transferred it into national legislation.
Lawmakers on Wednesday passed a bill that makes torture punishable by four to 10 years in prison – 12 for members of the security forces, with 198 backing the legislation, 35 opposing it and 104 abstaining.
Left-wing parties and the anti-establishment Five Star Movement abstained, saying the bill had been so heavily amended in parliament that it was now of little use.
The senator who originally presented the bill in 2013 abstained for the same reason when it was approved in the upper house two months ago.
Critics say the law's definition of torture is too narrow, requiring for example that violent conduct must be repeated and continuous and cause a "verifiable psychological trauma," meaning many acts of cruelty may fall outside it.
When the bill was approved in the Senate in May, Amnesty International called it "unpresentable" and "incompatible with the UN Convention against Torture."
In its final version it had been designed to protect Italian military and police "at all costs," the rights group said.
Torture is defined under the law as "intense physical suffering or psychological trauma verifiably caused by violence, grave threats or cruel actions."
In 2015 the European Court of Human Rights (ECHR) blasted Italy for police violence against anti-globalisation activists on the margins of a 2001 G8 summit in Genoa, judging that officers' actions against protesters sheltering in a school were akin to torture.
Several members of the Italian security forces were convicted after the violence, but this did not include any officers who had been at the scene.
The ECHR criticised this decision, saying it showed there was a "structural problem" with Italian legislation.