Daniele de Rossi and John Arne Riise put the visitors two up after just 29 minutes and Matteo Brighi restored the two-goal cushion on 56 minutes after Mario Balotelli had pulled one back just after the interval.
However, Balotelli made it 3-2 from the penalty spot after 62 minutes and substitute Hernan Crespo grabbed the equaliser within seconds of coming on in the 77th minute.
Antonio Cassano and Giampaolo Pazzini put the home side two up with goals either side of half-time and Alexandre Pato’s late effort for Milan was scant consolation.
At the other end of the table, Reggina are four points adrift at the bottom after a 1-1 draw at home to Fiorentina.
Alessio Sestu put the home side in front after 20 minutes but Emiliano Bonazzoli levelled just two minutes later.
Second-bottom Lecce went down 2-0 at Udinese thanks to goals from Gaetano D’Agostino and Giovanni Pasquale in the last 15 minutes, while Lecce’s woes were complete with the late dismissal of Luca Ariatti.
Chievo remain in the bottom three but only on their head-to-head record with Bologna after a 2-0 win at Atalanta.
Substitute Antonio Langella opened the scoring after 78 minutes and Sergio Pellissier secured the points a minute from time, while the home side had Thomas Manfredini sent off after 82 minutes.
Cagliari and Torino and Siena and Genoa fought out goalless draws while the day’s biggest winners wereCatania, who won 4-0 at 10-man Palermo.
The home side had Marco Bresciano sent off after just 16 minutes, by which time Pablo Ledesma had already opened the scoring.
Takayuki Morimoto and Giuseppe Mascara made it 3-0 before the interval and Michele Paolucci completed the rout after 66 minutes.
Claudio Marchisio scored in the 44th minute to take the Bianconeri to within six points of Serie A leaders Inter Milan, who host Roma tomorrow night.
Napoli are still searching for their first win in eight Serie A matches and remain stuck in mid-table .
Two goals from Mauro Zarate earlier helped Lazio to a comfortable 2-0 victory over Bologna, their first win at the Stadio Olimpico since December.
Zarate fired Lazio into the lead in the 36th minute with a powerful free-kick and then doubled his side’s advantage nine minutes from time.