Real Madrid will face Atletico Madrid in the UEFA Champions League last eight in a repeat of last season's final.
Barcelona, the third Spanish side to be included in the draw, will take on Paris Saint-Germain, while Porto will face 2013 winners Bayern Munich and Juventus will go head to head with Monaco.
Real and Atletico met in the showpiece in Lisbon last year, Real prevailing 4-1 in extra-time after Sergio Ramos' dramatic late header had denied Atletico victory in normal time.
The two clubs have already met six times during the course of this season, with Real yet to get the better of their near neighbours.
Both league meetings have ended in Atletico's favour - most recently a 4-0 thrashing at the Vicente Calderon last month.
Diego Simeone's side progressed 4-2 on aggregate in the Copa del Rey, and triumphed 2-1 over two legs of the Spanish Super Cup at the start of the campaign.
Barca face PSG in the last eight having been drawn alongside one another in the group stage of this season's competition.
Having shared a victory each earlier this campaign, the sides also faced off in the quarter-finals two years ago as the Catalan giants advanced on away goals after the tie finished 3-3.
Italian champions Juve have arguably the best of the draw, facing Arsenal's conquerors Monaco, while Bayern will also fancy their chances as they take on Porto.
Bayern have lost just one of 22 competitive matches against Portuguese teams, that coming in their European Cup final defeat to Porto in 1987.
The ties will take place on April 14/15 and April 21/22.
Draw in full:
Paris Saint-Germain v Barcelona
Atletico Madrid v Real Madrid
Porto v Bayern Munich
Juventus v Monaco