Had Inter, who led twice through Keita Balde and Mauro Icardi, held on for victory in Rome they would have leapfrogged Napoli and closed to within nine points of leaders Juventus.
But Cengiz Under produced a thunderbolt to draw mid-table Roma level before Kolarov punished Marcelo Brozovic for handling the ball in the box with a 72nd-minute penalty that saved the Giallorossi from suffering the ignominy of a third straight defeat.
Former Lazio forward Balde had broken the deadlock shortly before half-time by finishing off Danilo D’Ambrosio’s cross and, after Under struck his fine equaliser, Icardi headed in a Brozovic corner.
Earlier, Franck Kessie fired AC Milan to back-to-back wins and up to fourth place as his late penalty downed Parma 2-1 at the San Siro.
The Gialloblu had taken the lead through Roberto Inglese, who nodded in Matteo Scozzarella’s pass after half-time, but Patrick Cutrone soon levelled with a fine volley.
In the 71st minute Milan were awarded a spot-kick for Alessandro Bastoni’s handball, following a VAR review, and Kessie made no mistake when sending Jacopo Sepe the wrong way.
Lazio were then thwarted in their bid to reclaim the last Champions League spot as basement boys Chievo held them to a 1-1 draw in Verona.
Sergio Pellissier’s powerful first-half opener was not in the script and it took Lazio until the 66th minute to restore parity as Ciro Immobile found the bottom corner.
Romulo’s first-half dismissal set the tone for a bad-tempered clash between Torino and Genoa at the Stadio Olimpico, where two goals in a minute secured a 2-1 comeback victory for the hosts.
Genoa lost Romulo when the Brazilian right-back picked up two yellow cards in three minutes, the second for a high foot against Soualiho Meite. Nevertheless, Christian Kouame fired the Grifone ahead.
6 - Mauro #Icardi has scored six goals in his last four Serie A appearances at the Olimpico (vs AS Roma and Lazio), after having failed to find the net in his previous seven. Takeoff. #RomaInter pic.twitter.com/U8WEnthv7b— OptaPaolo (@OptaPaolo) 2 December 2018
Cristian Ansaldi equalised with a daisy-cutter on the stroke of half-time and, to Torino’s disbelief, the game was lost moments later when Andrea Belotti converted a penalty following a Sandro foul.
Cagliari held on for a point from a 1-1 draw at Frosinone despite having Antonio Barella sent off.
Francesco Cassata scuffed in relegation-threatened Frosinone’s opener but Cagliari responded through a rare goal from Diego Farias. Barella departed due to a second yellow earned for sliding in on Raman Chibsah with five minutes remaining.
Elsewhere, Sassuolo and Udinese shared the spoils from a goalless draw at the Mapei Stadium. Alfred Duncan saw his goal ruled out for offside while Rolando Mandragora went closest for Udinese.
Know more about Sport360 Application