Real Madrid have been drawn against Atletico Madrid and Juventus will face Monaco in next month's Champions League semi-finals.
The all-Madrid semi is a repeat of last year's final, which Real won on penalties, and the final three years ago which Real also won in extra-time.
After beating Bayern Munich 6-4 on aggregate in the quarter-finals, thanks in part to controversial refereeing decisions and a hat-trick from Ronaldo in the second leg, Zinedine Zidane's men were paired with their neighbours, who knocked out Leicester City.
It is the fourth season in a row in which the sides from the Spanish capital have met in the knockout rounds of the competition, with Real getting the better of them each time.
The first leg will be played at the Bernabeu, while the return tie will mark the last time the Vicente Calderon will host a Madrid derby before Atleti move into their new stadium next season.
Juventus, who last won the Champions League in 1996, defeated Monaco in the last eight of the 2014-15 competition en route to their final defeat at the hands of Barcelona.
Massimiliano Allegri's men impressively defeated LaLiga's champions 3-0 on aggregate in the quarter-finals this time, though, and remain on track for a Serie A, Coppa Italia and Champions League treble.
Monaco have been the surprise package in this season's competition and defeated Manchester City in the last 16 before completing a classy quarter-final triumph over Borussia Dortmund.
Leonardo Jardim's men have caused problems with the youth, vibrancy and pace in their side, with Kylian Mbappe a particular threat - the teenage France striker becoming the first player in the tournament's history to score in his first four knockout-stage matches.