Two goals in 10 first-half minutes from Kenny McLean and Todd Cantwell gave Norwich a healthy lead inside half an hour, before Sergio Aguero scored just before half time to give the visitor hope.
However, that hope was soon extinguished thanks a defensive howler from Nicolas Otamendi, who dawdled on the ball to allow Emiliano Buendia to dispossess him and set up goal machine Teemu Pukki.
New summer-signing Rodri pulled a late goal back with a shot from the edge of the area, but Norwich held on for a famous victory.
“It was a good game, they arrived [at goal] three or four times and we conceded bad goals,” City manager Pep Guardiola told Sky Sports.
“On the first set piece we knew they would attack the first post and the second one we didn’t make a counterattack, that can happen, but we didn’t control the line — and the third was a mistake.
“But I know what we are as a team, I know what they have done, what we are going to do again and I love my players. It’s a pleasure and honor to be with them and it’s a challenge at the highest level, people cannot expect to win every time or make 100 points or 90 points.”
City’s defensive frailties compound the news from earlier this week that star center-back Aymeric Laporte could be sidelined for up to six months with a knee injury.
Even with the Frenchman — undoubtedly one of the league’s best defenders — City had looked weak defending corners this season and it was a vulnerability Norwich exposed.
McLean rose highest at the near post to glance Buendia’s corner past the stranded Ederson, sparking wild scenes that surely even the most ardent Norwich fan couldn’t have predicted before kick-off.
So unexpected to win were Norwich, that some bookmakers had its odds of victory as long as 28/1.
Just 10 minutes later, Daniel Farke’s side tore up the script completely as Pukki, whose goalscoring exploits have made him a hero back home in Finland, turned provider to square the ball for Cantwell to tap into an empty net.
Guardiola’s decision to leave Kevin de Bruyne on the bench had raised eyebrows before the game and was beginning to look increasingly misguided as the half wore on.
However, with City looking bereft of ideas, Aguero popped up out of nowhere to head home from Bernardo Silva’s cross on the stroke of half time.
It looked to be the catalyst City needed to turn the game around but any momentum it had built at the start of the second half was quickly derailed by Otamendi.
The Argentine idled while in possession, blissfully unaware that Buendia was heading towards him, and had his pocket picked, gifting Norwich a third goal that Pukki was never going to miss.
The Finnish forward now has six Premier League goals and two assists to his name this season. No player in the division has been involved in more goals.
The visiting side continued to press and dominated the match, though never truly troubled Tim Krul in the Norwich goal.
Aguero passed up one of City’s only clear-cut chances, heading over when in an almost identical position to the one he had buried in the first half.
With less than three minutes remaining and with City’s intricate passing patterns not having any success, Rodri took a more direct approach and struck at goal from range.
His shot crept into the bottom corner, though Krul will be disappointed not to have saved after getting a hand on the ball.
Defeat means Liverpool extends its early lead to five points at the top of the Premier League title, following victory against Newcastle earlier Saturday.