The Partenopei failed to find a way through as they dropped points for the third time in five matches, handing the initiative to Juventus.
Juve can now move six points clear at the top if they beat Sampdoria at the Allianz Stadium on Sunday evening.
Napoli grew into the contest after a slow start that saw their opponents have a goal ruled out for offside through Mateo Musacchio, and Pepe Reina - who will switch clubs in the summer - did well to push behind Giacomo Bonaventura's strike.
Milan, now held in each of their last three league matches, should have been a goal down when Marek Hamsik raced in behind, only to square the ball to nobody in particular rather than go for goal.
Neither side could truly get going for large parts of the second half, but it was the visitors looking the more likely to make a breakthrough.
Donnarumma was well positioned to keep out Insigne's angled shot, before producing a remarkable save in stoppage time to deny Arkadiusz Milik from six yards.
AC MILAN (4-3-3): Donnarumma; Calabria, Zapata, Musacchio, Rodriguez; Kessie, Biglia, Bonaventura (Locatelli 80'); Suso, Kalinic (Silva 70'), Calhanoglu
NAPOLI (4-3-3): Reina; Maggio, Albiol, Koulibaly, Hysaj; Allan (Rog 87'), Jorginho, Hamsik (Zielinski 66'); Callejon, Mertens (Milik 66;), Insigne