Real Madrid will play Liverpool in the Champions League final after Karim Benzema's extra-time penalty completed a remarkable 3-1 comeback win over Manchester City.

Leading 4-3 from a pulsating first leg, Pep Guardiola's side appeared set for a second successive final appearance when Riyad Mahrez put them ahead in the 73rd minute at Santiago Bernabeu, but comeback kings Madrid sealed their place in Paris with a 6-5 aggregate triumph.

Substitute Rodrygo was their inspiration, as he became the first player to score twice in the 90th minute of a Champions League knockout match to force extra-time.

And Benzema wrapped up a magnificent turnaround for Carlo Ancelotti's LaLiga champions when, five minutes into extra-time.

City carried the greater threat in the first half, Thibaut Courtois making a brilliant stop from Bernardo Silva before denying Phil Foden just prior to the interval.

Madrid should have taken the lead early in the second half, yet Vinicius Junior was unable to convert Dani Carvajal's cross at the far post.

But City had shown more control and the lead was theirs when Mahrez arrowed a brilliant first-time finish beyond Courtois.

City's progression seemed secure, and Madrid appeared down and out when Jack Grealish burst through only to see a strike cleared off the line before Courtois then denied the £100million man moments later.

Yet Madrid do not know when they are beaten. Rodrygo stole in to turn home Benzema's square ball and, 91 seconds later, planted a wonderful header into the top-left corner.

The most remarkable of turnarounds was complete when Benzema calmly sent Ederson the wrong way from 12 yards after he was fouled by Ruben Dias in the box, with Fernandinho missing a glorious chance to prod in an equaliser as Madrid set up a meeting with Liverpool on May 28.