© Getty Images
There was controversy in the second minute of the game as Giacomo Bonaventura brought down Stefan Radu in the penalty area, but the referee booked the Lazio man for simulation rather than pointing to the spot.
The home side tried to restore parity when Klose fired an effort at goal from close range, but he was denied by a good save from Lopez, who made an even better stop from Antonio Candreva on the rebound.
Candreva was denied again minutes later as he coasted in at the back post, only to see his strike tipped onto the post by Lopez.
In the second half, Lazio did find their equaliser as Klose picked out the run of Parolo, and the midfielder made no mistake directing his volleyed effort past Lopez.
The home side turned the game around when they took the lead in the 51st minute, as Klose provided an impressive finish to beat Lopez from a tight angle.
Stefano Mauri had the chance to put the game beyond the visitors when he rose highest in the area to head a cross at goal, but he could only direct his free header over the bar.
However, Lazio sealed their win in the 81st minute when Candreva raided down the right, and his low cross was smashed into the net by Parolo for his second of the game.
The game was to end on even sourer note for Milan as Philippe Mexes lost his head, grabbing Mauri by the throat seconds after squaring up to the midfielder, and he was duly sent off after a further melee.