They played their usual patient game in the first half but struggled to create clear-cut openings and were caught out several times by quick Inter counter-attacks.
Were it not for some lacklustre finishing from the Italians, Pep Guardiola’s side could easily have fallen behind.
City made only one attempt on target in the first half when Erling Haaland’s header was comfortably claimed by Yann Sommer.
Haaland had another chance snuffed out when Alessandro Bastoni intercepted a Jack Grealish cross and the Norway striker also dragged a low effort narrowly wide.
Savinho also horribly missed the target but, other than that, most of the goalmouth action came at the other end.
A couple of good Inter break came to nothing as Mehdi Taremi and Marcus Thuram failed to trouble Ederson and Hakan Calhanoglu had a shot blocked.
A poor Ederson pass gifted a chance to Darmian but the former United defender’s strike was headed behind by Josko Gvardiol.
Thuram shot wide from the edge of the box and Ederson saved well with his feet from Carlos Augusto.
Darmian had a golden opportunity after being played clear early in the second half but bizarrely opted to backheel – to nobody in particular – rather than shoot as he closed in on goal.
Coach Simone Inzaghi, who had been a frenetic figure on the touchline throughout, reacted with absolute incredulity and fury at his profligacy.
City were by now playing without playmaker Kevin De Bruyne, who had looked in some discomfort in the latter stages of the first period and was withdrawn at the interval.
Yet that allowed Foden the chance to return to frontline action and he and fellow substitute Gundogan at least enlivened City.
The England international brought a good save out of Sommer 20 minutes from time and Gvardiol also tested the Switzerland number one.
In between those chances, Inter spurned another glorious opening when substitute Mkhitaryan blasted over from 10 yards.
Lautaro Martinez shot at Ederson as Inter pushed for a late winner and City also threatened late on as Foden and Gundogan tested Sommer.