Napoli were frustrated for 70 minutes against 10 men and saw a penalty saved, but eventually swept Milan aside.
The Azzurri now move just four points away from third-placed Lazio and five from Roma.
Both sides suffered humiliating defeats midweek, the Partenopei falling 4-2 at Empoli and Rossoneri beaten 3-1 at home by Genoa. Rafa Benitez had the chance to close on the top three, but also rested some players for the Europa League semi-final against Dnipro. Milan had Jeremy Menez, Philippe Mexes and Ignazio Abate suspended, plus Suso, Adil Rami, Luca Antonelli, Stephan El Shaarawy, Riccardo Montolivo and Michael Essien injured.
Milan have won here just twice in 19 years, both 2-1 results in January 1998 and October 2010.
It was the worst possible start for Pippo Inzaghi’s men, as Marek Hamsik burst into the box and was brought down by Mattia De Sciglio. After 43 seconds it was a penalty and a straight red card. Diego Lopez made it slightly less disastrous by performing a great save on the Gonzalo Higuain spot-kick. That was Pipita’s third failed spot-kick out of six this season.
Giacomo Bonaventura tested Mariano Andujar from distance, while Lorenzo Insigne hit a fresh-air volley from 12 yards. Gabriel Paletta at full stretch took a dangerous ball over the top away from Higuain as he was lining up the shot clear on goal.
The hosts were keeping a lot of the ball, but not really testing Diego Lopez, as they almost felt more pressure to deliver since the red card. In fact, Milan went closer to scoring on 38 minutes when Bonaventura nodded a Salvatore Bocchetti cross on to the outside of the post, leaving Andujar rooted to the spot.
Hamsik drilled wide, but the frustration was visibly growing among the hosts and their fans. Insigne robbed Bocchetti to set up Higuain, whose shot was off target.
Within seconds of the restart an Andrea Poli back-pass sent Napoli clear, but Hamsik slipped and Paletta charged down the Callejon strike. The Spaniard then wasted an Insigne ball over the top with a poor first touch and fired an angled drive so far wide it went for a throw-in, again on Insigne’s assist.
Hamsik came so close on the hour mark, as he flicked a low Callejon cross with his heel from six yards and it bounced off the inside of the far post.
Manolo Gabbiadini just failed to get on the end of a Faouzi Ghoulam ball rolled across the six-yard box and had penalty appeals, claiming Paletta held him back. Replays did show the shirt was tugged.
The breakthrough finally came on 71 minutes. Daniele Bonera’s terrible headed clearance was straight at Hamsik, who wasted no time for an immediate snapshot in off the inside of the near post. The precision of the snooker shot gave Diego Lopez no chance.
The fear and frustration suddenly lifted off Napoli, turning them into a different team. The second goal was inevitable, Dries Mertens’ pull-back from the left let through by a Gabbiadini dummy for Higuain to score from 12 yards.
Milan fell to pieces once Napoli found their confidence. Ghoulam pulled back again from the left flank for Higuain, whose shot was parried by a Diego Lopez foot, but only as far as Gabbiadini to turn in the rebound from point-blank range.
In stoppages a Mertens curler was fingertipped round the far post by Diego Lopez.
Sent off: De Sciglio 1 (M)
Saved penalty: Higuain 3 (N)