Jeremy Menez had given the visitors the lead early on but the home side came back to collect all three points
Lazio climbed into Serie A's top three on Saturday after two goals at the start of the second half resulted in a 3-1 come-from-behind win over Milan at the Stadio Olimpico.
Milan - which finished with 10 men after Philippe Mexes' stoppage-time tussle with Stefano Mauri - gained an early lead in the Italian capital as former Roma man Jeremy Menez took advantage of Dusan Basta's mistake to race away and provide an accomplished finish for his 10th league goal of the season.
Miroslav Klose and Antonio Candreva were both guilty of wasting chances for the home side to equalize in the first half, but after the interval Lazio turned the match around in the space of four minutes.
First Klose set up Marco Parolo for a fine effort, before Riccardo Montolivo's misplaced pass let the former Germany international in and he made no mistake in front of goal.
Parolo then added a second inside the final 10 minutes, although it may have come at a cost with substitute Filip Djordjevic appearing to injure himself by treading on the ball in the buildup.
Victory saw Lazio climb above both Sampdoria and Napoli into third, with those sides not in action until Sunday and Monday respectively.
For Milan, defeat extended its winless run in the league to five matches, as Filippo Inzaghi's men continue to struggle to find any degree of consistency in their results.
Lazio felt it should have had a penalty in the second minute when Stefan Radu went down under a challenge from Giacomo Bonaventura, but all the Romanian received was a yellow card after protesting too much to referee Paolo Mazzoleni.
And the home side were further ruing that decision when Milan took the lead two minutes later.
Menez robbed Basta on the halfway line and broke clear before firing a low left-footed finish into the right-hand corner.
Lazio threatened an equalizer in the 18th minute, but Diego Lopez was quick to rush from his line to thwart Klose before Mexes blocked Candreva's follow-up effort.
Candreva then crossed for Klose, but the German headed wide when he ought to have brought the scores level.
Lazio continued to press for an equalizer and felt it should have had a spot kick for a second time when Mexes tugged on Mauri's shirt, but once again Mazzoleni waved the appeals away.
After threatening a leveller for much of the first half, one duly arrived for Lazio two minutes into the second when Klose sent in a superb cross from the right and Parolo cushioned a first-time finish into the net from 10 yards.
Klose then turned from provider to goalscorer four minutes later as he capitalized on Montolivo's mistake. The midfielder's loose pass was wide of Mexes and Klose nipped in before slotting beyond Lopez.
With nine minutes remaining, Lazio wrapped up the points when Parolo swept in his second after Djordjevic had failed to make a telling connection on Candreva's low ball into the middle.
As tempers flared in stoppage time, Mexes grabbed Mauri by the throat having earlier been provoked, and received a straight red card to cap another miserable outing for Milan.