Eleven-time champions Real Madrid will take on neighbours Atletico Madrid in the Champions League semi-finals after the draw pitted last year's finalists against each other.
Monaco will tackle Juventus in the other semi-final.
Real and Monaco and Real will play their first leg matches at home, on May 2 and 3 respectively, with the return fixtures being played on May 9 at Juventus and May 10 for Atletico.
This will be the fourth successive season the Madrid rivals have met in the competition and Atleti have yet to get the better of Los Blancos across that run - including the final in 2014 and 2016.
"We know each other well. It's the fourth season in a row we're facing them in Europe and they're a tough opponent," Emilio Butragueno, former Real Madrid forward and the club's current Director of Institutional Relations said.
"In theory it's better to play the return leg at home but that all depends on the result of the first leg
"When we played against Bayern it seemed that having the second leg at home was an inconvenience but we got through," he added.
Meanwhile, freescoring Monaco, face the steely Juventus defence.
"Monaco ! Strong team with many talented players and an impressive run this season. We have to be careful, but the goal is clear," Juventus midfielder Sami Khedira tweeted.
Monaco, who were knocked out by two-time champions Juve in the 1997-98 Champions
League semi-finals and in the quarter-finals two years ago, have never won the competition but reached the final in 2004.
"This Monaco team have no limits. They are young and fearless," said Monaco vice-president Vadim Vasiliyev.
"They (Juventus) have re-inforced their squad in the last two years, but so have we," added Vasiliyev.
Real and Juventus are still undefeated in the competition.
The final will be played in Cardiff on June 3.