Maurizio Sarri's side controlled much of Sunday's encounter, but could not carve a way through Milan's dogged rearguard, with Gianluigi Donnarumma pulling off an incredible save to deny Arkadiusz Milik in stoppage time.
Before that, Lorenzo Insigne and Marek Hamsik had passed up decent opportunities either side of the interval, while the offside flag had denied Mateo Musacchio a goal for Milan late in the first half.
Milan's determined display gave them a platform to hit Napoli on the counter, and only terrific defending from Raul Albiol prevented Nikola Kalinic putting Gennaro Gattuso's side ahead midway through the second period.
Napoli left it late to edge past Chievo last time out and substitute Milik looked set to win this game late on, but he failed to beat Donnarumma from point-blank range.
A third draw in five league games moves Napoli on to 78 points - three shy of leaders Juve, who could move six clear with a victory over Sampdoria later on Sunday.
Pepe Reina, who looks likely to join Milan at the end of the season, was the first goalkeeper to be called into action, pulling off a fantastic save from Giacomo Bonaventura's third-minute effort.
Milan's fast start should have resulted in the opening goal 11 minutes in, but Kalinic was unable to head home from close range.
Napoli's first chances came soon after - Jose Callejon slicing wide before Dries Mertens combined excellently with Insigne and forced Donnarumma into action.
Sloppy Milan defending almost allowed Hamsik to capitalise at the other end, while Insigne flashed a strike across the face of goal at the culmination of a fantastic run.
Musacchio thought he had given Milan the lead six minutes before the interval after he hammered in the rebound from Hakan Calhanoglu's venomous shot, but the goal was correctly ruled out.
Insigne continued to prove a thorn in Milan's side after the restart as he teed up Hamsik, who failed to apply the finish from a tight angle.
Napoli's domination failed to produce another clear opening, however, and Kalinic would almost certainly have put Milan ahead on the hour if not for Albiol's last-ditch interception.
Milan were subsequently restricted to nothing more than fleeting moments on the break as Napoli searched for a winner.
It was not to be, however, with Donnarumma producing a stunning save at full stretch - diving low to his left - to keep out Milik's effort and potentially end Napoli's title challenge.
Key Opta Facts:
- Milan have drawn three Serie A games in a row for the first time since September 2007.
- Milan are unbeaten in their last seven home league games (W4 D3), with three clean sheets in this period.
- Donnarumma made his 100th Serie A appearance, at the age of 19 years and 49 days.