For a third straight game, Manchester City came close to dropping vital points, only for a late goal to secure a win. They struggled to break down a surprisingly stubborn West Ham side, but David Silva popped up to score the winner.
The result ensures City retain their eight-point lead at the top of the Premier League table going into next week’s titanic derby clash against second-placed Manchester United.
Here, we rate the players from both sides.
MANCHESTER CITY
Ederson: Confident and assured again. Could do little about West Ham’s goal, but crucial save from Sakho shot. 6
Walker: Like his team-mates, was sluggish in the first half but burst forward with more intent in the second. 6
Mangala: A first league start for the Frenchman as Kompany was rested, but remains edgy and unconvincing. 5
Otamendi: Proving a real asset at both ends of the pitch. Strrong at the back and slid in a vital leveller. 7
Delph: Impressive and intelligent on and off the ball having started in midfield and remained so when he reverted to his left-back role. 8
Danilo: Not figured as much as he would have liked and this display was perhaps a reason why. Makes good runs, but final ball not good enough, nor his link-up with Sane on the left. 5
Silva: The magician conjured up a winner out of nothing. Clever run, clever finish, clever player. 8
De Bruyne: Another assist for the brilliant Belgian, but was often frustrated as the Hammers constantly closed him down. 7
Sane: Was a doubt through sickness, but recovered well enough in the second half to torment Zabaleta and finally create some chances. 7
Aguero: Largely starved of the ball and of opportunities, but was subdued when City poured forward after the break. 5
Sterling: After all his recent matchwinning heroics, this was a let down from the winger. Not involved enough. 6
SUBSTITUTES
Jesus (for Danilo 46′): Changed the game with his entrance as he brought energy and excellence to a flagging attack. 7
Fernandinho (for Aguero 85′): Brought on to shore up the defence once City had gone ahead. 6
Bernardo Silva (for Sane 90′): The Portuguese helped waste seconds at the end. N/A
WEST HAM UNITED
Adrian: Started instead of the ineligible Joe Hart and may well stay there after a solid display and spectacular saves, namely from Silva, De Bruyne, Sane twice and Jesus. 8
Zabaleta: Great reception at his former club and led from the front with sterling effort and crunching tackles until Sane’s youth and pace caused him problems in the second half. 7
Rice: Drafted in to replace the injured Winston Reid and belied his 18 years with a combative display, only to be caught out by Silva for the winner. 6
Ogbonna: Tough at the back and towering when he went upfield to notch the opener. 7
Cresswell: Kept Sterling quiet and provided great cross for Ogbonna goal. 7
Antonio: A lone warrior up front and similarly put in a battling display when he moved back into Kouyate’s role. 7
Obiang: Workmanlike in a congested midfield and helped stifle City’s frontline supply. 7
Kouyate: A powerful presence until he had to go off with injury. The Hammers missed his strength and breaks when he went off. 6
Fernandes: Constantly involved in trying to stop City and spark his own side on the counter. Made some timely interventions. 7
Masuaka: Offered Cresswell good support on the left, but could not get forward as much as his side needed. 6
Lanzini: The main source of West Ham’s creativity and the former Al Jazira man was denied a goal by a fine Ederson save. 7
SUBSTITUTES
Sakho (for Kouyate 43′): Offered a welcome attacking option, but the striker missed two chances that could have changed the outcome. 6
Arnautovic (for Lanzini 69′): Created the injury-time opportunity for Sakho with a charging run down the right. 6
Ayew (for Antonio 88′): Not enough time to make an impact. N/A