Internazionale's title celebrations are on hold after defeat in the Milan derby as Roma closed the gap to three points.
Milan's win at the San Siro also lifts Carlo Ancelotti's side into the fourth UEFA Champions League spot after Fiorentina lost at Cagliari.
At the bottom end of the table, there were big wins for Parma, Reggina, Cagliari and Torino in the battle to avoid relegation.
Victory in the local derby would have all-but secured another title for Inter, but they slipped to a 2-1 defeat to Milan.
Filippo Inzaghi opened the scoring on 51 minutes and Kaka doubled the advantage just five minutes later.
Inter replied through Julio Cruz on 76 minutes, but the reigning champions are now just three points clear of Roma with two games left to play.
Roma left it late to win 3-0 at Sampdoria, with all the goals coming inside the final 15 minutes of the game.
Christian Panucci finally broke the deadlock on 75 minutes, David Pizarro chipped in with the second four minutes later and Brazilian full-back Cicinho grabbed the third on 85 minutes.
Fresh from missing out on a spot in the Uefa Cup final, Fiorentina are now in danger of failing to qualify for the Champions League after a 2-1 defeat at Cagliari.
Jedaias Jeda netted on 20 minutes for Cagliari, and Daniele Conti notched the second on 51 minutes before Mario Santana scored for Fiorentina 60 seconds later.
Juventus are guaranteed third spot in the table and they went down to a 1-0 defeat at Siena, with the only goal arriving on six minutes through Houssine Kharja.
Livorno are on the brink of relegation from Serie A after the bottom club lost 3-2 at Atalanta in a pulsating game.
Atalanta established a two-goal lead after Cristiano Doni scored on 56 minutes and Andriano Ferreira Pinto netted three minutes later.
But Livorno rallied to draw level through Fausto Rossini and Simone Pavan, only for Atalanta to win it two minutes from time through Simone Padoin.
Reggina moved out of the bottom three after a 2-1 success at fellow strugglers Catania, with Nicola Amoruso scoring twice.
Amoruso netted on 40 minutes and converted a last-minute penalty before Jorge Martinez replied with an injury-time consolation for Catania.
A 57th minute goal from Cristiano Lucarelli kept Parma's survival hopes alive after a 1-0 win at home to Genoa.
Fabio Quagliarella's 18th minute goal earned Udinese a 1-0 win away to Empoli, who have slipped into the relegation zone.
David Di Michele's 56th minute goal secured a priceless 2-1 win at home for Torino against Napoli.
Torino had earlier gone in front through Alessandro Rosina's 27th minute penalty before Napoli equalised on 53 minutes through Matteo Contini.
In-demand striker Carvalho Amauri struck twice in the last 10 minutes as Palermo came from behind to win 2-1 at Lazio.
Goran Pandev's spot-kick put Lazio ahead on 25 minutes before Amauri equalised on 82 minutes and then hit the winner a minute into injury-time.