Jack Grealish led a dramatic comeback at the London Stadium as Manchester City kept their Premier League title destiny in their own hands.
Two Jarrod Bowen goals had given West Ham a 2-0 lead at half time, allowing Liverpool supporters to believe that the EPL title race could be blown wide open.
But Grealish pulled one back early in the second half, before a Vladimir Coufal own goal helped City salvage a 2-2 draw.
The result could have been much better for City, who were awarded a late penalty kick.
Had Riyad Mahrez scored it, the title race would have been all but over.
But he was denied by Lukasz Fabianski, meaning City may still need to beat Aston Villa on the final day in order to hold off the challenge from rivals Liverpool.
West Ham 2-2 Man City Highlights
Bowen's first goal arrived on 24 minutes when he raced onto a hooked Pablo Fornals pass before dribbling around City keeper Ederson.
City were dominant in terms of possession with 78% of the ball in the first half.
But with Fernandinho playing at center-back in a patched-up defense, Pep Guardiola's men looked vulnerable.
That vulnerability allowed Bowen to pounce again seconds before half time.
Michail Antonio flicked a pass to Bowen, who was played onside by Oleksandr Zinchenko, and he held his nerve to drill a low shot past Ederson.
City needed a big response in the second half and they got off to a flying start.
Grealish was teed up by a header from Rodri and the former Aston Villa captain volleyed in his third Premier League goal of the season.
Grealish had another chance moments later but his effort was well blocked.
West Ham were twice gifted golden chances to make it 3-1 by defensive blunders from Zinchenko and then Fernandinho.
But Bowen and Antonio both failed to punish them as they missed the target.
Those misses proved costly for the Hammers as City equalized via a Coufal own goal on 69 minutes.
City should have taken the lead in the final five minutes after the VAR advised referee Anthony Taylor to award a penalty for Craig Dawson's foul on Gabriel Jesus.
Taylor did indeed point to the spot but Mahrez was denied by a strong save from Fabianski.