Den argentinske stjärnanfallaren Sergio Agüero startade sin första ligamatch sedan oktober efter att ha dragits med skadeproblem och coronasmitta.
Men Manchester Citys mål kom från mer oväntat håll.
Mittbacken Ruben Dias nickade in 1–0 i 30:e matchminuten efter att han dröjt sig kvar efter en fast situation. Kevin de Bruynes långa, svepande inlägg nådde den 23-årige portugisen som kunde göra sitt första mål i Manchester City-tröjan.
West Ham kom in i matchen med fin form – Londonlaget hade tre segrar i sina fyra senaste ligamatcher och en överraskande fjärdeplats i tabellen.
Och i slutet på andra halvlek växte de in i matchen.
En bollvinst på offensiv planhalva ledde till en snabb omställning där United-lånet Jesse Lingard kunde styra ett inlägg vidare till Michail Antonio som tryckte in kvitteringen vid bortre stolpen.
Vann mot West Ham
Men när Manchester City jagade ledningsmålet i andra halvlek klev ytterligare en mittback fram.
Manchester City bet sig kvar omkring offensivt straffområde efter en hörna. Algeriern Riyad Mahrez lurade sin motståndare längs högerkanten och hittade en passning snett inåt bakåt till engelske mittbacken John Stones som kunde bredsida in segermålet.
West Ham tryckte på i slutet och hade några möjligheter att få med sig en poäng, men det blev inga fler mål och City kunde räkna in sin 20:e raka seger.
Med 26 av 38 omgångar spelade ser det ut som att Manchester City kommer att jogga hem Premier League-titeln. De är i nuläget 13 poäng före tvåan och lokalrivalen Manchester United, som har en match mindre spelad.