Defending champions Real edged city rivals Atletico 1-0 thanks to an 88th-minute winner from on-loan striker Javier Hernandez yesterday after a goalless first leg.
Juventus also made it to the last-four after a 0-0 draw in Monaco allowed them to qualify courtesy of their 1-0 first leg win in Italy last week.
Bayern and Barcelona had made sure of their places on Tuesday leaving Friday's semi-final draw to feature four teams with 21 European Cup triumphs between them.
The tie in Madrid was a repeat of last season's final, won by Real 4-1 after extra-time, but Atletico had gone unbeaten in seven previous meetings against their city rivals this season.
More From This Section
Hernandez then finally got the all-important goal after brilliant work from James Rodriguez and Cristiano Ronaldo left the Mexican (on loan from Manchester United) with the simplest of finishes from close range.
Juventus made the last four of the Champions League for the first time since 2003 after a goalless draw in their quarter-final, second leg with Monaco saw them progress 1-0 on aggregate.
A controversial Arturo Vidal penalty in the first leg in Turin last week ultimately proved enough for the Serie A leaders, who relied on their defensive strength to see off opponents again let down by their lack of quality in the final third.