Manchester City's big Champions League night started with flashes of the old form re-emerging, only to end in bitter disappointment as the failings that have characterised their disappointing season surfaced once more.
With Grealish probing and Haaland providing the cutting edge, City made the perfect start. It was a bitter blow when the former went off injured after half an hour.
Real had already started to pose a threat through the pace of Mbappe and the trickery of Rodrygo and Vinicius Junior, but the pivotal moment for City came when Haaland's deflected shot bounced back off the bar. A two-goal lead might have made a significant difference.
The 15-time champions then started to apply remorseless pressure on City, who were overcome by tired legs and were actually labouring badly when Haaland put them back in front against the run of play late on.
Once again, key men such as Bernardo Silva and Kevin De Bruyne looked like players with too many miles on the clock, while Ruben Dias and John Stones have been managing their game time carefully.
And in that agonising conclusion, City went from thinking they might take a lead to The Bernabeu, to settling for a draw, then suffering the pain of defeat.
City now face a mammoth task to take this stuttering Champions League campaign beyond the play-off stage.