The victory extends Lazio's unbeaten run to eight league games and condemns the Sardinians to a sixth straight defeat.
Marco Sau gave the visitors a shock lead, before Abdoulay Konko levelled things up and Antonio Candreva netted a penalty after Cagliari keeper Michael Agazzi was sent off for fouling Miroslav Klose. It's the second consecutive game that a dismissal has cost Cagliari precious points in their battle for Serie A survival.
Lazio missed the injured Ederson and the frozen out Mauro Zarate, while Federico Marchetti faced his former club between the sticks.
The home side asked the early questions. Senad Lulic chipped over from the edge of the area and Hernanes rattled the bar on 16 minutes with a trademark free kick from 30 yards.
Moments later, Radja Nainggolan spurned Cagliari's solitary first half chance. Victor Ibarbo broke clear and Sau laid the ball off to the Belgian, who was unmarked in the Lazio box. Marchetti got his gloves to the ball, before Andre Dias cleared it off the line.
Luca Rossettini cut out a Klose breakaway with a vital touch, which Agazzi did well to save as it could easily have rolled past him for an own goal.
Ivo Pulga was ordered from the touchline to the stands for dissent, inbetween seeing Lulic and Hernanes force Agazzi into some routine saves. Klose missed a guilt-edged chance seven minutes before the break. Hernanes unlocked the defence to send the German clear. After rounding Agazzi, Klose sent his shot wide of the far post.
As the first half drew to a close, Daniele Conti blasted a free kick into the Lazio wall and Hernanes blazed over from distance.
Lazio hit the post five minutes after the restart. Rookie defender Dario Del Fabro and Stefan Radu both got a touch as the ball struck the upright and bounced back into play, before Giuseppe Biava could head it into the net.
Klose got on the end of a Konko long ball, only to see his looping header go wide. Cagliari hit Lazio with a sucker punch, striking against the run of play just after the hour mark.
Sau picked up the ball just outside the Lazio area and squeezed a shot past Radu and Andre Dias, which surprised Marchetti and crept past him at his near post. In the process, the Cagliari frontman bagged the honour of the first official Serie A goal of 2013.
Lazio made attacking substitutions, while a recurrence of a leg injury put paid to Andre Dias' match.
Candreva forced a corner out of Agazzi with an angled shot and that led to the equaliser eleven minutes from time. A backpedalling Biava headed a wayward cross back into the box for Konko to guide home with a sliding shot from point blank range. Lazio turned the screw and pressed for a winner.
Controversy struck six minutes before the end. Klose ran clear and lofted the ball over Agazzi onto the roof of the net, just a split second before the keeper clattered him in the box.
The referee pointed to the spot straightaway and, having just booked Agazzi for timewasting, handed the distraught custodian a second caution. Replays showed the decision was harsh. Andrea Cossu joined his teammate for an early bath after a heated protest.
Candreva stepped up and smashed the spot kick over substitute Vlada Avramov's body, into the bottom corner of the net.
Lazio: Marchetti; Konko, Dias, (Ciani 74) Biava, Radu; Ledesma; (Floccari 74) Mauri, Gonzalez, (Candreva 63) Hernanes, Lulic; Klose
Cagliari: Agazzi; Perico, Rossettini, Del Fabro, Avelar; Dessena, (Cossu 55) Conti, Ekdal, Nainggolan; Ibarbo, (Avramov 85) Sau (Nene 75)
Goals: Sau 62 (C) Konko 79 (L) Candreva pen 86 (L)
Sent off: Agazzi 84 (C) Cossu 85 (C)