A difference over two legs between possible Champions League glory and heartache was a deflected Gareth Bale cross. Bale’s first half goal was too much for Manchester City to overcome and it sent Real Madrid through to face city rivals Atletico in the final.
City midfielder Fernando inadvertently diverted Bale’s 20th-minute strike into his own net at the Bernabeu to hand Real a 1-0 win both on the night and on aggregate.
The one goal lead mean that Real could never relax as a City away goal would have been enough to see them advance on the night. But it was not to be as City never threatened with any regularity.
And if it was not for goalkeeper Joe Hart this match would have been over earlier, as Hart produced a string of impressive saves to deny Real Madrid time and time again.
Real turned up the pressure early with a fit-again Ronaldo, relishing the chance to run at Nicolas Otamendi and Eliaquim Mangala, heading over and sending another shot off-target.
City were unable to stem the tide and the hosts broke through as Bale burst into the area on the right and his fierce shot took a slight but critical deflection off Fernando. It flew into the roof of the net over the diving Hart.
It might have got worse for City as Pepe poked the ball past Hart from a Toni Kroos free-kick but the flag was raised for offside.
City struggled to muster a response but Jesus Navas and Bacary Sagna both got into good positions only to fail to pick out the isolated Sergio Aguero.
City’s one good moment of the first half came just before the break as Fernandinho cut inside from the left but his powerful drive struck the base of the post.
The visitors needed a rousing team talk at half-time from their outgoing manager Manuel Pellegrini, but as the second period began it was Hart that kept them in the game.
Hart got his body in the way to deny Luka Modric after the rest of the defence had switched off and then twice saved from Ronaldo.
Bale went close with a header that rebounded off the crossbar before the extraordinary sight of Ronaldo catching the ball and pushing it into the net – but he had already been flagged offside.
Real should have put the game out of sight but the longer they went without scoring, signs of frustration began to creep in. Kroos appeared to hit out at Fernandinho off the ball and niggly fouls crept into their game.
Knowing a goal would change everything, City pushed late on but after Aguero sent a long-range shot over, their hopes faded.