Playing in their first European semi-final for 45 years, Premier League City produced a cagey first-leg display that offered little menace, although crucially they denied free-scoring Real an away goal.
Ten-times champions Real suffered a setback before kickoff when Cristiano Ronaldo, the leading scorer in this season’s competition with 16 goals, was ruled out with a thigh injury.
His spark was badly missed in a turgid first half at City’s Etihad Stadium, but Real finally came alive after the break and the hosts needed two instinctive late saves from Hart to keep them in the hunt for the second leg at the Bernabeu next week.
“It’s too close to call at the moment,” City captain Vincent Kompany said. “We couldn’t have wished for more. We have 90 minutes left and we'll look forward to next week.”
Neither side managed a shot on target in the opening 45 minutes, but Real gradually upped their tempo after the break with Gareth Bale increasingly influential.
The Welshman curled one effort wide and had a penalty appeal turned down before substitute Jese looped a header against the crossbar with Hart at full stretch.