By doing it again against City, Madrid booked a spot in the May 28 final in Paris against Liverpool, who advanced after defeating Villarreal on Tuesday. Madrid defeated Liverpool in the 2018 final, when the Spanish powerhouse clinched its record-extending 13th title.
The result ended City's quest for its first Champions League trophy. Pep Guardiola's team lost in the final last year to Chelsea.
Madrid looked beaten near the end of regulation when Rodrygo scored his goals two minutes apart. Riyad Mahrez had put City ahead in the 73rd but the Brazilian forward equalized in the 90th and got the go-ahead goal with a header a minute into stoppage time.
A few minutes before Rodrygo's first goal, Ferland Mendy had saved Madrid from conceding a second goal that could have sealed City's qualification by clearing the ball in front of the goal line while tumbling backward to keep an attempt by Jack Grealish from going in.
Madrid goalkeeper Thibaut Courtois moments later saved a Grealish shot with the bottom of his cleat.
Rodrygo's double made it 5-5 on aggregate and extra time was needed, as fans on social media struggled to comprehend what they'd just seen.
English football great Gary Lineker tweeted: "Un-f***ing-believable.
"This is why this sport is so bloody brilliant, especially at this level. Because you just never know. Imagine not liking football."
Madrid carried all the momentum into extra time and Benzema gave the hosts the 3-1 lead by converting a 95th-minute penalty kick after he was fouled inside the area.