It also means we are now 27 matches unbeaten - one short of equalling the Club record of 28.
The first-half hour of the game was disjointed by City’s lofty standards, with the tempo slower than it has been of late and a number of uncharacteristic, misplaced passes.
In fact, there had been no shots on target in those opening 30 minutes by the Premier League leaders – but the first moment of real quality changed all that, as Kevin De Bruyne, out on the right flank, checked on to his left foot and then pinged a superb ball into the Hammers six-yard box where Ruben Dias ghosted in to head home his first goal for the Club.
The visitors – well organised and solid - came close to an equaliser when Antonio struck the outside of the post if a reminder was needed of their potential threat – their next attack resulted in a goal.
City lost possession near the halfway line, were caught out of position and as the Hammers worked the ball out to the right, Coufal’s low cross was directed at goal by Jesse Lingard and Antonio turned in from close range.
The second-half followed a similar pattern, with West Ham camping in their final third and City lacking the usual zip and verve, though a lunchtime kick-off after a midweek Champions League game hardly helped matters.
But this group of players know how to dig deep when they need and on 68 minutes, City were back in front as Oleks Zinchenko played it out to Riyad Mahrez and his low cross into the centre was swept home by John Stones to make it 2-1 and wrap up three points.