Första mötet var en målfest i Manchester som City lyckades vinna med 4–3.
Returen i Madrid under onsdagskvällen sprakade det inte alls lika mycket om, i alla fall till en början.
Real Madrids målvakt Thibaut Courtois tvingades till en kanonräddning på ett Bernardo Silva-skott efter 20 minuters spel och i inledningen av den andra halvleken nickade Real-anfallaren Vinicius Junior utanför i ett bra läge men i övrigt fanns det inte mycket att skriva hem om under de första 70 minuterna.
Men mot slutet av matchen började det hända grejer.
I den 73:e minuten drev Citys Bernardo Silva upp bollen i mitten och hittade Riyad Mahrez till höger i straffområdet som tog emot passningen och skickade iväg ett hårt, högt skott mot det första krysset som Courtois var tvungen att släppa förbi sig.
Benzema rullade in avgörandet
Uppförsbacke för Real med andra ord som därmed var tvunget att göra två mål på drygt 20 minuters spel för att få till en förlängning.
I den 90:e minuten kom det första efter att Karim Benzema hittat Rodrygo mitt i straffområdet som i sin tur inte gjorde några misstag från nära håll och två minuter senare slog Rodrygo till igen när han nickade in ett inlägg från Daniel Carvajal bakom City-målvakten Ederson.
Tre minuter in i förlängingen kom nästa kalldusch för City när Real Madrid fick straff efter att Ruben Dias fällt Karim Benzema i straffområdet. Benzema själv tog hand om straffen och rullade kallt in bollen intill den högra stolpen.
Efter det orkade inte City resa sig och nu väntar en final mellan Real Madrid och Liverpool den 28 maj i Paris.