David Silva captained Manchester City to a 5-0 final-day thrashing of relegated Norwich on his final Premier League appearance for the club.
First-half goals from Gabriel Jesus and Kevin de Bruyne set Manchester City on course to victory, but things could have been different had Onel Hernandez's opener not been ruled out by VAR before Teemu Pukki spurned the Canaries' best chance.
- Premier League table | Final-day results
- How Man City and Norwich lined up | Match stats
- Hits and misses: Silva lining for Man City?
Manchester City were dominant throughout though and completed an emphatic victory in the second half as Raheem Sterling and Riyad Mahrez found the net, before De Bruyne capped another influential performance with a stunning second.
The victory saw De Bruyne register a record-equalling 20th Premier League assist, Manchester City smash through the 100-goal mark and goalkeeper Ederson secure the Golden Glove with a 16th clean sheet as Pep Guardiola's side geared up for next month's bid for Champions League glory.
For Norwich it was a dismal end to a dismal campaign that saw them finish the season rock bottom of the Premier League and relegated to the Championship for a record fifth time.
Man City: Ederson (8), Walker (8), Garcia (6), Laporte (7), Cancelo (6), Rodri (6), Foden (6), De Bruyne (9), D. Silva (7), Sterling (8), Jesus (8).
Subs: Fernandinho (6), Gundogan (6), Mahrez (7), B. Silva (n/a).
Norwich: Krul (7), Aarons (7), Godfrey (8), Zimmermann (6), Lewis (6), McLean (5), Rupp (5), Stiepermann (6), Hernandez (8), Cantwell (6), Pukki (5).
Subs: Vrancic (6), Idah (6), Thomas (n/a), Famewo (n/a), Martin (n/a).
Man of the Match: Kevin de Bruyne
How Man City and Silva signed off in style
Norwich's victory over then-champions Manchester City last September sent shockwaves around the globe. A repeat performance was always going to be a tall order, but the Canaries threatened to do just that.
Hernandez looked to have given Norwich the lead against the run of play on nine minutes when he caught Ederson out at his near post with a 25-yard drive, but it was ruled out after a VAR check spotted a marginal offside.
- David Silva started on his final Premier League appearance, replacing Bernardo Silva in Man City’s only change from the win over Watford.
- Christoph Zimmermann, Marco Stiepermann, Lukas Rupp and Teemu Pukki returned as Norwich made four changes from the defeat to Burnley.
Manchester City took immediate advantage of their reprieve, breaking the deadlock within two minutes as Jesus bundled the ball from range after David Silva's attempt to convert Raheem Sterling's cross was blocked.
Manchester City pressed for more but were repelled by Canaries top performers Tim Krul and Ben Godfrey. Had Pukki been in similar form, the visitors may have drawn level but fired straight at the on-rushing Ederson after racing through on goal, with Todd Cantwell sending the rebound over the bar.
After Silva came close to a farewell goal, De Bruyne doubled the hosts' lead on the stroke of half-time, picking out the top corner with a sublime finish after showing great footwork on the edge of the Norwich area.
Silva continued his goal hunt in the second half, swivelling the in area to get a shot away but Krul was on hand with another fine save at full stretch.
Christoph Zimmermann turned a De Bruyne cross against the post before Jesus could convert and Mahrez flashed a volley over from a corner as the Belgian's bid for an assist continued.
De Bruyne eventually got the assist as Sterling added a third on 80 minutes with City's 100th Premier League goal of the season, slotting past Krul after he was played in behind.
City refused to take their foot off the gas and more goals followed as Mahrez punished poor Norwich defending with a four inside the area before De Bruyne put the seal on another ruthless City attacking display with stunning second that cannoned in off the post.
'Emotional' Silva: I'll even miss the weather!
David Silva speaking to Sky Sports: "I have enjoyed the 10 years here, today was the last game in the Premier League, but now we have to be focused on the Champions League.
"It was emotional, I have been here for 10 years, I love all of the players and staff, we have a good relationship and I am going to miss all of them.
"I couldn't imagine winning so many titles in the way we did when I first came here. I am a lucky guy; I've had a lot of nice moments. I will miss everything, even the weather!"
What the managers said…
Man City manager Pep Guardiola: "We did a good job - a game with many players who were outstanding. In general, we were in a good position. It's good to finish here, second position, scoring a lot of goals, Ederson and Kevin de Bruyne and now we have two weeks to prepare for Real Madrid!
"It's a different competition and opponents, we have two weeks now. Tomorrow we have regeneration and after that we'll prepare for the game, to try to be in a good game and that's all. We'll arrive in the best conditions and that's what we try to do."
Norwich boss Daniel Farke: "We knew today wouldn't be competitive against one of the best sides in the world. We were not able to fill the whole bench. You could feel a bit scared when you look at their bench to ours. The score was not a fair reflection. We need fresh faces and fresh energy. The Championship is a big challenge."
Opta stats: City centurions
- Manchester City have scored 100+ league goals in a top-flight season for a fifth time, an English record (also 1936-37, 1957-58, 2013-14 and 2017-18).
- Norwich's return of 21 points is the sixth-lowest figure in Premier League history, while it is the Canaries' lowest return in any division in their history.
- Norwich are the third team in Premier League history to lose 10 consecutive matches, after Sunderland (20 as of September 2005) and Aston Villa (11 as of April 2016).
- Manchester City midfielder Kevin De Bruyne has been directly involved in 33 Premier League goals this season (13 goals & 20 assists), the most of any player.
Manchester City host Real Madrid in the second leg of the Champions League last-16 tie on August 7 at 8pm.