Manchester City left it late for the third game in a row as they beat West Ham United 2-1 at the Etihad Stadium thanks to David Silva’s strike.

City’s winning run in the division now stands at 13 games, equalling the record set by Chelsea in 2016-17 and Arsenal in 2001-02, and saw them re-establish an eight-point advantage.

The leaders all but monopolised possession in the early stages and, after they had worked a short corner, Raheem Sterling appealed in vain for a penalty after going to ground inside the area.

Fabian Delph ventured forward to fire in an optimistic effort from range that was blocked before, with five minutes gone, Eliaquim Mangala headed over from a corner.

City had shown vulnerability from set pieces in their narrow home win over Southampton and did so again when a West Ham corner was flicked on but turned over the top by the stretching Michail Antonio.

Back at the other end, Kevin De Bruyne found Silva, but he was unable to pick out Leroy Sane inside the area.

But West Ham were getting the ball into the City box when they could, a low Arthur Masuaku cross eluded Antonio and was gathered by City keeper Ederson.

With 25 minutes gone, De Bruyne and Delph created a shooting chance for Silva, whose 25-yard effort demanded the game’s first real save from Adrian.

Sterling then fired well over from outside the box as one or two signs of frustration began to show among Guardiola’s players.

Ten minutes before the break City had another scare when Manuel Lanzini thumped an angled shot that was pushed around the post by Ederson.

David Moyes’ side were looking comfortable against a strangely lethargic home side who were struggling to find a spark.

The visitors were forced into a substitution just before the break when Cheikhou Kouyate, who looked to have pulled a muscle, was replaced by Diafra Sakho.

Ogbonna celebrates after giving West Ham a shock lead.

But they took the lead on the stroke of half time when City’s problems at corners were exploited as Cresswell’s bending cross was headed home powerfully by Angelo Ogbonna.

Guardiola made a half-time change, replacing Danilo with Gabriel Jesus, but it was the Hammers who had the first attempt of the second half when Masuaku’s bouncing effort was gathered by Ederson.

City were frustrated again after 55 minutes when Adrian made a fine save from a De Bruyne free kick but were back on level terms seconds later when Gabriel Jesus’ fierce low cross was forced home from close range by Nicolas Otamendi.

De Bruyne was booked for a trip on Masuaku, but the leaders were dominating and Sane saw an angled strike parried by Adrian.

West Ham brought on Marko Arnautovic for Lanzini as the game neared the 70-minute mark, but City continued to press and De Bruyne saw a deflected shot gathered by Adrian.

The visiting keeper was in action again as he stopped a curling effort from Jesus, with Sterling unable to turn home the rebound.

Silva had a shot deflected behind, with an Aguero strike from the edge of the box cannoning to safety off the massed ranks of visiting defenders soon afterwards.

With nine minutes remaining, Antonio broke for West Ham and saw his effort from distance parried by Ederson.

But after 83 minutes, Silva broke the visitors’ hearts when he hooked De Bruyne’s fine pass into the corner with Adrian helpless in goal.

Fernandino replaced Sergio Aguero for City, but they had further scares towards the end as Arnautovic conjured a cross that was just too high for Antoinio and Sakho lashed wide from another Arnautovic cross when he should have hit the target.

Manchester City travel to Ukraine in midweek for a Champions League tie with Shaktar Donetsk before returning home to face rivals Manchester United on Sunday. West Ham face Chelsea on Saturday and then Arsenal the following Wednesday.

Today’s other Premier League result:

  • AFC Bournemouth 1-1 Southampton