The Blues went in a goal down at the break after the Hammers struck just before half time, but second-half goals from Nicolas Otamendi and skipper Silva's late volley means City have now won 20 games in a row.
The game began with the now familiar sight of City camped in the final third against a side with 10 men behind the ball.
The only way to avoid a heavy loss, opposing managers seem to have agreed, is to defend in numbers and frustrate in the hope that the Blues might not find a way through.
There is always the possibility of nicking something on the break or from a set-piece, too and while it’s understandable, it doesn’t make for riveting viewing for the home crowd.
The opening half-hour saw few chances of any real note with the Hammers crowding out the Blues by sheer weight of numbers in the penalty area.
On a rare foray forward, a West Ham corner saw Aaron Cresswell’s corner flicked on by Cheik Kouyate and Michail Antonio just fail to connect at the far post.
It was a warning shot from the visitors.
City’s best effort came on 25 when David Silva’s deflected shot was tipped over by Adrian.
With the visitors growing in confidence Manuel Lanzini found himself with just Ederson to beat and the Brazilian stood firm to fist the ball around the post with 36 minutes played.
The Blues’ passing was lacking zip and some of the passing was uncharacteristically sloppy so when the visitors scored from a set-piece just before the break, it wasn’t entirely a surprise.
Cresswell whipped in another corner with pace and Angelo Ogbonna rose to powerfully head past Ederson to give the side with the worst defensive record in the top flight a half-time lead.
Pep Guardiola responded by taking Danilo off and bringing Gabriel Jesus on in an attempt to unpick a disciplined Hammers defence and within 12 minutes of the re-start, a revitalised City drew level.
The excellent Fabian Delph drew a foul on the edge of the Hammers’ box and Kevin De Bruyne’s free-kick was beaten away by Adrian, but City came again and Sterling’s flick allowed Jesus to burst into the box and square the ball across to Otamendi who slid the ball home from close range.
The Blues finally had their tails up.
Leroy Sane then forced Adrian into another good save as he sent in a fierce drive from the corner of the box and another Sane shot seemed to strike the raised hands of Manuel Lanzini as moved in for the kill.
It was like the Alamo for a while, with West Ham clinging on and the Blues desperately trying to find a way through, though the visitors did counter-attack on 81 minutes through Antonio who forced Ederson into a superb full-length save.
Then, at long last, City edged in front.
For the umpteenth time, De Bruyne received the ball around 30 yards from goal, and yet again he searched for a killer pass to a team-mate - he spotted David Silva's dart, delivered a pass into the six-yard box and the Spaniard just managed to get enough contact to volley past Adrian and send the Etihad wild.
For sheer persistence and effort, it was no more than the Blues deserved.
Yet West Ham should have levelled in the dying moments as Marko Arnautovic skipped past Eliaquim Mangala before teeing up Diafra Sakho who somehow put the ball wide with a clear sight of goal.
It was a hard victory and not the easiest game to watch at times, but City dug in again and go into next weekend's derby with the eight-point lead at the top intact.
The move that led to the equaliser involving Sterling, Jesus and finally Otamendi - restored the belief that it wasn't going to be one of those days...
City Matchday App Star Man: Fabian Delph
What it means...
City stay eight points clear at the top of the table and have now won 20 matches in succession.
City resume Champions League action with a trip to face Shakhtar Donetsk on Wednesday evening.
With Group F won, expect wholesale changes for the game in Ukraine - the hosts, however, need at least a draw to progress to the Round of 16.
Then it's off to Old Trafford for the 175th Manchester derby next Sunday - should be interesting...
Stats and milestones:
City have equaled the number of successive Premier League wins in a single season with the win over the Hammers. The Blues have now won 13 in a row to equal Arsenal and Chelsea's record. Arsenal (14) have the overall record, though this included wins from two separate seasons.
City have won 20 games successively in all competitions and are unbeaten in 28 games in total.
City have won 13 of the last 18 meetings against West Ham, with the Blues scoring 45 goals and conceding 14.
Kevin De Bruyne has had a hand in 54 goals for the Blues since his debut in 2015 - scoring 17 and creating 37 for his team-mates.