West Ham struck once in each half as City were beaten 2-0 in east London.
A poke from Sebastien Haller and a half-volley from Andriy Yarmolenko were enough for the home side on an afternoon when City struggled to create too many clear-cut opportunities.
A frustrating 90 minutes saw Todd Cantwell miss City's best chance, but West Ham were good value for their victory.
Daniel Farke made one enforced change to City’s starting line-up from Norwich’s last two Premier League matches, with Christoph Zimmermann recovering to replace Grant Hanley – who picked up a groin injury in training on Friday. On the bench, Josip Drmic returned from his hamstring problem while Ibrahim Amadou was named in the squad for the first time.
Manuel Pellegrini kept the same starting XI from West Ham’s 3-1 win at Watford last weekend, with former Canary Robert Snodgrass on the bench.
City, in their grey third kit, started confidently and bossed the first 10 minutes, with West Ham struggling to pick up the movement from Norwich’s front four. It was almost all City, with West Ham pinned in, but twice when Marco Stiepermann and then Teemu Pukki got through in the area they were penalised for infringements.
West Ham started to step things up and had the first real chance of the game. A quick interchange between Andriy Yarmolenko and Haller sent Felipe Anderson through on the right and, 10 yards out, looked certain to score before Zimmermann brilliantly slid in to deflect the strike behind for a corner.
However, Norwich fell behind on 25 minutes when Haller got in ahead of Ben Godfrey in the six-yard box to tap in a precise left-wing slide pass from Arthur Masuaku.
City responded well and after a long-range effort from Todd Cantwell that went over he had a great opportunity on 31 minutes to level things. Moritz Leitner clipped a brilliant 20-yard crossfield ball to Max Aarons on the right and he beat two men to barrel his way into the area before chipping a ball to the far post, but the arriving Cantwell headed a fantastic chance over.
The game became increasingly open, with Stiepermann sending a powerful drive down Lukasz Fabianski’s throat before Anderson broke through on the left only to surprisingly elect to square the ball instead of shooting when 12 yards out.
Norwich were forced into a substitution on 38 minutes. Zimmermann, who was on the end of a reckless challenge from Haller that wasn’t penalised, couldn’t shake off the effects and had to be replaced by debutant Amadou in the heart of defence.
The closing stages of the first half were niggly, with both sides struggling for momentum as referee Paul Tierney below for half-time.
A cagey start to the second half burst into life when Cantwell crashed an effort against the crossbar, but he was flagged just offside. But with City’s tails up, West Ham punished Norwich by doubling the lead on 56 minutes. Norwich failed to properly deal with a bouncing ball in the box and Yarmolenko crashed in a half-volley from just eight yards.
The game went into a scrappy lull after that, with neither team asserting themselves. Pukki had a drive from just outside the area that was straight at Fabianski on 66 minutes, while Buendia did well to clear a goalbounder header from Issa Diop off the line.
Pellegrini made his first change on 66 minutes, bringing on Snodgrass for goalscorer Yarmolenko.
City started to up the tempo without really creating anything, and Farke rolled the dice on 77 minutes with Kenny McLean and Josip Drmic replacing Stiepermann and Cantwell.
A minute later and Tim Krul kept Norwich in the game. Masuaka crossed from the left and Manuel Lanzini’s bullet header from six yards was brilliantly tipped over the bar. Krul was at it again a minute later, getting down well to save Anderson’s 18-yard drive and then getting up to block Haller’s angled effort.
Pukki and Drmic went close late on, with Fabianski saving the Finn's glancing header before Drmic stabbed McLean's left-wing cross an inch wide under pressure six yards out.
That was as close as City came in the second half, and they go into the international break hoping the injury to Zimmermann isn't a bad one - although Amadou looked assured on his debut.
West Ham: Fabianski, Yarmolenko (Snodgrass, 71), Anderson (Fornals, 88), Lanzini, Noble (Sanchez, 85), Ogbonna, Haller, Diop, Fredericks, Masuaku, Rice
Subs not used: Roberto, Balbuena, Zabaleta, Ajeti
Goals: Haller (24), Yarmolenko (54)
Bookings: Fredericks (60), Snodgrass (74)
Norwich: Krul, Aarons, Godfrey, Zimmerman (Amadou, 36), Leitner, Lewis, Cantwell (McLean, 78), Buendia, Stiepermann (Drmic, 77), Trybull, Pukki
Subs not used: Fahrmann, Byram, Vrancic, Tettey
Bookings: Aarons (62)
Referee: Paul Tierney
Kick off time: 3pm
Venue: London Stadium