Six games remain in one of the closest title run-ins in Italy for many years and Lazio's 3-1 defeat by leaders Juventus opened up the battle for the Champions League qualifying berth.
Osvaldo's eighth minute opener at the Stadio Olimpico was cancelled out by Gelson Fernandes just before the break.
The Giallorossi had to wait until the 86th minute to retake the lead when the talismanic Francesco Totti swooped and all three points were made absolutely sure by Marquinho in injury time.
Meanwhile, Napoli lost 3-1 at home to Atalanta and InterMilan beat Siena 2-1 thanks to Diego Milito's double.
Genoa and Cesena shared a 1-1 draw, while Fiorentina and Palermo played out a goalless stalemate at the Stadio Artemio Franchi.
Elsewhere, Parma beat Novara 2-0 through goals from Jonathan and Sebastian Giovinco at the Stadio Ennio Tardini, while Lecce beat Catania 2-1 at the Stadio Angelo Massimino as Daniele Corvia and David Di Michele were on target late on with Gonzalo Bergessio's strike proving insufficient for the hosts.