Napoli could have snatched a draw if it had converted both of its penalties at Etihad Stadium after City had scored through Raheem Sterling and Gabriel Jesus.
Dries Mertens had a penalty saved by City goalkeeper Ederson Moraes in the first half, and Amadou Diawara scored with his attempt in the 73rd.
Napoli, which leads the Italian league, could struggle to advance in the Champions League after losing two of its first three games in Group F. The team is third, three points behind second-place Shakhtar Donetsk.
City has earned the maximum of nine points and should only need to win one of its last three games to qualify for the knockout stage.
LIVERPOOL 7, MARIBOR 0 Liverpool rediscovered its potency by thrashing Maribor, matching the biggest away win in Champions League history and emphatically securing its first win in Group E.
Mohamed Salah scored twice after goals from Roberto Firmino and Philippe Coutinho as Liverpool took a 4-0 lead before halftime.
Firmino added a second goal before Alex Oxlade-Chamberlain scored — his first for Liverpool — and Trent Alexander-Arnold completed the rout, which was the biggest loss of the competition for Maribor, a Slovene club.
Liverpool started off with draws against Sevilla and Spartak Moscow, but this win lifted the English team to the top of the group — on goal difference from Spartak, which thrashed Sevilla 5-1.
Liverpool has struggled to turn chances into goals in recent games, notably draws in the Premier League against Burnley and Manchester United that have dropped Jürgen Klopp’s team off the title pace.
OTHER MATCHES Borussia Dortmund of Germany tied the Greek club Apoel, 1-1, in Group H; RB Leipzig of Germany defeated Porto, 3-2, in Group G; Shakhtar Donetsk of Ukraine topped the Dutch side Feyenoord, 2-1, in Group F; the Turkish club Besiktas defeated France’s Monaco, 2-1, in Group G; and Spartak Moskva of Russia won by 5-1 against Sevilla in Group E.