Gabriel Jesus scored his first Manchester City goal as they tore West Ham apart at London Stadium.
City, who left striker Sergio Aguero and goalkeeper Claudio Bravo on the bench, led when Kevin de Bruyne played a one-two with Jesus before stroking home.
Four minutes later, they doubled their lead when the impressive Leroy Sane beat two defenders and his deflected cross was tapped home by David Silva.
And the game was as good as won before half-time when Raheem Sterling squared the ball to Jesus to tap home.
Yaya Toure added a fourth after the break from a penalty when Hammers debutant Jose Fonte brought down Sterling.
West Ham, who made errors to lose possession for each of City’s three first-half goals, have been beaten heavily by City twice at home in 2017, having lost 5-0 in their FA Cup meeting last month.
City are now only behind fourth-placed Liverpool on goal difference, 10 points behind leaders Chelsea.
Pep Guardiola’s men will be further delighted by the fate of their city rivals.
Eldin Jakupovic made a string of fine saves as Hull frustrated Manchester United by claiming a goalless draw in the Premier League at Old Trafford.
The hosts dominated the match but could not find a way past the Tigers goalkeeper, who brilliantly kept out Zlatan Ibrahimovic’s long-range strike and Paul Pogba’s driving effort in the first half.
In between, Harry Maguire should have done better with a header which he put wide of goal.
Ibrahimovic hooked an effort wide in the second half and Jakupovic made his best save to prevent Juan Mata from scoring at the back post, as well as keeping out Paul Pogba’s curler.
The visitors could have won it with five minutes to go, but on-loan Lazar Markovic’s clipped shot came back off the post and Abel Hernandez struck tamely at David de Gea.
The point keeps United in sixth place, but allowed Hull to move off the bottom of the table.