Sassuolo moved to the summit earlier on Sunday with a 2-0 win at Hellas Verona but Milan responded with an Ibrahimovic-inspired victory at Stadio San Paolo to go two points clear.
The veteran striker headed in from 14 yards with 20 minutes played to score for the eighth league game running before kneeing in an unorthodox second after 54 minutes, but he worryingly limped off late on with a thigh injury.
Dries Mertens had responded for Napoli only for Tiemoue Bakayoko to be sent off 165 seconds later and Milan, without head coach Stefano Pioli and a number of other backroom staff members due to coronavirus, wrapped up the win through Jens Petter Hauge's debut Serie A goal in injury time to maintain their unbeaten start.
Returning Napoli keeper Alex Meret pushed Hakan Calhanoglu's shot past the post and Simon Kjaer shinned wide from the resulting corner as Milan made a positive start.
The visitors did not have to wait long to make the breakthrough as Ibrahimovic got in front of Kalidou Koulibaly and headed Theo Hernandez's left-sided cross away from Meret.
Gianluigi Donnarumma produced fine saves to deny Dries Mertens and Hirving Lozano, either side of Giovanni Di Lorenzo firing against the crossbar, as Napoli initially responded well.
Those missed chances for Napoli would prove costly as Ibrahimovic converted Ante Rebic's floated delivery from underneath the crossbar to give his side some breathing space.
Ibrahimovic had an instant third rightly ruled out for offside and Napoli gave themselves hope when Mertens turned Alessio Romagnoli and beat Donnarumma with his shot.
But a clumsy challenge from Bakayoko on Theo saw the ex-Milan midfielder pick up a second yellow and Napoli failed to create any more clear-cut openings.
Ibrahimovic pulled up in what will be a big concern for the absent Pioli but substitute Hauge squeezed a shot past Meret from a tight angle to seal the three points.
10 - Zlatan #Ibrahimovic is the oldest player able to score at least 10 goals in the first 8 Serie A matchdays (before him the record was the Silvio Piola one in 1942/43, 29 years old). Undying.#NapoliMilan— OptaPaolo (@OptaPaolo) November 22, 2020
What does it mean?
In the absence of Pioli in Naples, they produced the type of win that suggests they may just last the distance this term.
Despite having only 37 per cent of the ball, Milan hit the target seven times to deservedly earn the win - their first away at Napoli since 2010-11, the year they won the most recent of their 18 Scudetti.
There is simply no stopping the 39-year-old striker. He scored from two of his three shots and now has 10 goals for the season.
Only Marco van Basten (12 in 1992-93) has scored more for Milan in the opening eight games of a Serie A campaign, but he may now be facing a spell on the sidelines.
Mertens' strike gave Milan something to think about, only for Bakayoko to pick up what seemed an inevitable second yellow against the team he represented in 2018-19.
Bakayoko turned over possession seven times - only Ismael Bennacer (8) did so more before the midfielder was dismissed - and his absence was keenly felt as Napoli struggled to grab a foothold in the match and conceded a third.
Key Opta Facts
- Ibrahimovic has scored at least 10 goals in a top-five European leagues campaign for the 14th time in his career (eight of these in Serie A).
- In the last 50 years, Ibrahimovic is only the fifth player to have scored at least 10 goals in the first eight Serie A matchdays: Marco van Basten in 1992, Gabriel Batistuta in 1998, Paulo Dybala and Ciro Immobile in 2017, Ibrahimovic in 2020.
- Ibrahimovic has scored a goal in each of his six 2020-21 Serie A appearances. Only three players before the Swede have done so in the three-points-for-a-win era (Batistuta in 1994-95, Christian Vieri in 2002-03 and Krzysztof Piatek in 2018-19).
- He is the oldest player to score at least 10 goals in the first eight Serie A matchdays (before him the record was the Silvio Piola in 1942-43, aged 29).
Both sides are in Europa League action on Thursday, with Napoli hosting Rijeka and Milan traveling to Lille.