Manchester City will take on four-time winners Barcelona in the last 16 of the UEFA Champions League for the second straight year.
City ensured progression to the knock-out stages with a 2-0 win at Roma in their final Group E game.
And they have received the dubious reward of a two-legged tie with the Catalan club, who beat Paris Saint-Germain 3-1 last week to ensure top spot in Group F.
Manuel Pellegrini's men will be out for revenge in the tie, having suffered elimination courtesy of a 4-1 defeat to Barca last term.
Barca's arch rivals Real have been drawn against Schalke as Carlo Ancelotti's men continue their bid to defend the crown they won for the 10th time in May.
That tie is also a repeat from the previous campaign, when Real hammered the Gelsenkirchen club 9-2 on aggregate over two legs.
Beaten 2013-14 finalists Atletico Madrid's next hurdle in their quest to go one better comes in the form of Bundesliga side Bayern Leverkusen, whose domestic rivals Bayern Munich will face Ukrainian side Shakhtar Donetsk as they aim to regain European football's biggest prize.
Chelsea will again meet a PSG side they beat on away goals in last term's quarter-finals, with David Luiz's return to Stamford Bridge another interesting sub-plot.
London neighbours Arsenal face Monaco in a tie that will see manager Arsene Wenger attempt to eliminate the club he guided to the Ligue 1 title in 1988.
Borussia Dortmund and Juventus face off in a rematch of the 1997 final won by the German outfit, and two-time winners Porto meet Swiss team Basel.
First legs in the ties will be played between February 17-25, with the return matches being staged between March 10-18.
The draw in full:
Paris Saint-Germain v Chelsea
Manchester City v Barcelona
Bayer Leverkusen v Atletico Madrid
Juventus v Borussia Dortmund
Schalke v Real Madrid
Shakhtar Donetsk v Bayern Munich
Arsenal v Monaco
Basel v Porto