The visitors' first league loss since January was self-inflicted as defenders made regular errors, but Norwich, whose goals came from Kenny McLean, Todd Cantwell and Teemu Pukki, fully deserved its second home win since sealing promotion from the Championship.
Rodri drilled home with two minutes to go to give City hope of a point but defeat leaves it five points behind Liverpool in the table, with the Reds holding a 100 per cent record after five Premier League games.
Norwich was without 11 players because of injuries and had to name two goalkeepers on the bench, but Daniel Farke's men took a shock lead in the 18th minute.
City's weakness from near-post corners is well known and when Emiliano Buendia floated Norwich's first set-piece into that area, McLean ran into space to power home a superb header.
It got worse for the champion 10 minutes later. Rodri lost a 50-50 on halfway and City was immediately exposed with Pukki able to easily advance and square for Cantwell to score.
Raheem Sterling's header hit the post as City aimed to respond and Sergio Aguero halved the deficit before the break by nodding home a perfectly placed left-wing Bernardo Silva centre.
Nicolas Otamendi's moment of madness presented Norwich with a gift of a third after the restart, Buendia robbing the defender and feeding Pukki for an easy finish, his eighth goal of the season for club and country.
Pep Guardiola sent on Kevin De Bruyne, Gabriel Jesus and Riyad Mahrez from the bench but the cavalry could not rescue the champions, although Rodri's 20-yard drive flew past Tim Krul to leave Norwich to see out a nervy finale.
City will want a better defensive display when it opens its UEFA Champions League campaign away to Shakhtar Donetsk on Thursday (AEST). It then takes on Watford at home next weekend, when Norwich travels to Burnley.