Once again, Teemu Pukki will dominate the sports pages in England. The Finnish forward set up Todd Cantwell for the Canaries' second effort before scoring his sixth goal of the season in the second half, and was a constant nuisance to Pep Guardiola's rearguard with his pressing and intelligent running.
With the defeat, Manchester City are now five points adrift of Premier League leaders Liverpool.
Norwich won, and they won without a string of first-team regulars. Christoph Zimmermann, Max Aarons, Tom Trybull, Timm Klose, Moritz Leitner, Patrick Roberts, and Mario Vrancic were all unavailable, while Tim Krul, Ben Godfrey, and Grant Hanley shrugged off fitness concerns to earn spots in the squad.
Daniel Farke had to name two goalkeepers on his bench to make up the numbers.
But the hosts were sensational, hunting down Manchester City's back-four in packs and knitting together tidy passing moves throughout.
Kenny McLean bypassed Kyle Walker and Rodri to steer a near-post header past Ederson for Norwich's opener. Their second goal followed a tidy exchange between Pukki and Cantwell which caught the visitors on the break, and their third came when Pukki pick-pocketed a dozing Nicolas Otamendi.
Sergio Aguero gave Pep Guardiola hope when he met Bernardo Silva's cross to make it 2-1 just before the break, and Rodri halved the deficit once more in the 88th minute. But City were ultimately outfought and outthought by Farke's brigade, and newly promoted Norwich deserved to hold on for the three points.
"It's unbelievable," Cantwell told BBC Sport post-match. "It's an unbelievable feeling, we just want to kick on now and go again next week."