Roma's slip-up allowed Juventus to widen the gap at the top of the Serie A standings, while the bragging rights were shared in a dramatic Milan derby.
Juventus pulled eight points clear at the league summit after they ran out 2-0 victors against rock-bottom Pescara at Stadio Adriatico on Saturday.
A first-half brace from Gonzalo Higuain (22', 43') saw the Bianconeri edge ever closer to their sixth consecutive Scudetto, while leaving the Rosanero rooted to the foot of the table, 12 points adrift of safety.
Elsewhere, Roma's slim title hopes drifted further away after they were held to a 1-1 draw by Atalanta at Stadio Olimpico.
European hopefuls La Dea took a 1-0 lead into the break courtesy of Jasmin Kurtic's 22nd-minute opener, but the second-placed Giallorossi hit back five minutes into the second half through Edin Dzeko to earn a share of the spoils.
Napoli maintained their push for the runners-up spot after recording a 3-0 victory over Udinese at Stadio San Paolo.
All three goals were scored in the second half, with Dries Mertens breaking the deadlock on 47 minutes before Allan (63') and Jose Callejon (72') sealed a second successive win for the third-placed Azzurri, who moved within two points of Roma.
Meanwhile, a last-gasp equaliser saw AC Milan clinch a 2-2 derby draw with Inter Milan at the San Siro.
first-half goals from Antonio Candreva (36') and Mauro Icardi (44') gave Inter a comfortable lead at the break in the Derby della Madonnina, but the Rossoneri staged a late fightback as Alessio Romagnoli pulled one back in the 83rd minute before Cristian Zapata popped up deep into injury time to rescue a share of the spoils.
— AC Milan (@acmilan) April 15, 2017
Milan remain just above their neighbours in sixth position, two points shy of the European places, with the Nerazzurri a further two points adrift.
Lazio twice came from behind as they fought back to earn a 2-2 draw with Genoa at Stadio Luigi Ferraris.
The hosts got off to a good start when Giovanni Simeone broke the deadlock in the 10th minute, but they were pegged back on the stroke of half-time by Lucas Biglia's equaliser.
Goran Pandev restored their lead 12 minutes from time, although the fourth-placed Biancocelesti were denied the win in stoppage time as Luis Alberto pounced to steal a point for the Rossoblu, who edged further away from the relegation zone in 16th spot.
Sassuolo snapped a six-match winless streak as they battled back from a goal down to beat Sampdoria 2-1 at the Mapei Stadium.
Patrik Schick's 28th-minute opener handed La Samp the lead at half-time, but the 15th-placed Neroverdi responded quickly after the restart as Antonino Ragusa (49') restored parity before Francesco Acerbi (56') completed the comeback win.
Cagliari took a step closer to securing their top-flight status with a comprehensive 4-0 victory over Chievo at Stadio Sant'Elia.
Early goals from Marco Borriello (11') and Marco Sau (15') put the 12th-placed Rossoblu in the driving seat before Joao Pedro's (40', 90') brace wrapped up the points.
Crotone kept their survival hopes alive as they fought back to clinch a 1-1 draw with Torino at Stadio Olimpico Grande Torino.
Andrea Belotti's 66th-minute penalty looked to have secured the win for Toro, but Simy salvaged a share of the spoils for the 18th-placed Squali, who find themselves five points adrift of safety.
Empoli gave themselves some breathing room to the drop zone as they recorded a 2-1 win over 10-man Fiorentina at Stadio Artemio Franchi.
The visitors went into the break 1-0 up thanks to Omar El Kaddouri's 37th-minute opener, but La Viola drew level through Cristian Tello on 64 minutes.
In match ended in dramatic fashion as Manuel Pasqual restored the Azzurri's lead in stoppage time before Nikola Kalinic picked up a straight red card for the hosts.
Inter Milan 2-2 AC Milan
Roma 1-1 Atalanta
Palermo 0-0 Bologna
Cagliari 4-0 Chievo
Torino 1-1 Crotone
Fiorentina 1-2 Empoli
Pescara 0-2 Juventus
Genoa 2-2 Lazio
Sassuolo 2-1 Sampdoria
Napoli 3-0 Udinese