Holders Real Madrid will face city rivals Atletico Madrid in the last eight of the Champions League after the draw set up a repeat of last year's final.
Paris St Germain and Barcelona were paired together, having met in the group stage, with the French side winning in Paris and the Catalans coming out on top in Spain.
Porto will face 2013 champions Bayern Munich, a repeat of the 1987 final won by the Portuguese side, and Juventus will take on Monaco.
Real, who won last year's final 4-1 after extra time against their local rivals, endured a wobble in the last 16 against Schalke 04, while Atletico came through a penalty shootout against Bayer Leverkusen.
The ties will be played on the mornings of April 15/16 and April 22/23.