The young midfielder, on at half-time to replace Sergio Aguero, took just six minutes to haul Pep Guardiola’s side level.
West Ham had taken a first-half lead through a spectacular bicycle kick from Michail Antonio.
City, transformed by the introductions of Foden and fit-again Kevin De Bruyne, dominated the second half but were unable to add to their solitary goal.
The Hammers will be encouraged by another point, following on from Sunday’s dramatic comeback at Tottenham, and given that their record in this fixture is atrocious.
But injuries and have taken their toll on City, so much so that Guardiola named an unchanged starting line-up for the first time since October 2017, some 172 games ago.
Guardiola clearly wanted to build on the momentum from Wednesday’s Champions League win over Porto, but instead they looked weary in the first half and it was West Ham who took the initiative with Antonio firing them into an 18th-minute lead.
Tomas Soucek began the move down the City left, laying the ball off to his Czech mate Vladimir Coufal.
Right-back Coufal, making his home debut, swung in a cross which Antonio, despite being surrounded by five defenders and Ruben Dias, acrobatically hooked over his shoulder and past Ederson.
City claimed Soucek had handled in the build-up but a VAR check ruled otherwise.
It was only the second goal West Ham had managed in six fixtures against the same opponents at the London Stadium – City had racked up 22 over the previous five.
City had a chance to level when Joao Cancelo overlapped and drove in a low cross but Riyad Mahrez, arriving at the far post, could only guide the ball into the hands of Lukasz Fabianski.
Yet West Ham finished the first half on the front foot, Antonio almost muscling his way through again before Soucek’s shot was blocked.
Guardiola replaced Aguero with Foden and moved Raheem Sterling, who had been kept very quiet by Coufal, into the central striker’s role.
Within six minutes they were level, Cancelo tearing past Coufal and crossing for Foden to turn and fire home.
West Ham lost Antonio, and much of their attacking thrust, to injury and City pushed for a winner with Fabianski holding a De Bruyne free-kick before Arthur Masuaku came up with a goal-saving challenge to deny Mahrez.
Pablo Fornals fluffed an excellent chance for the Hammers when he made a mess of an attempted lob over Ederson, and Fabianski came to West Ham’s rescue to deny Sterling and Mahrez at the death.