Real thrashed Premier League champions Manchester City 6-3 on aggregate in the play-offs and will now make the trip across town to play Atletico, the side they beat in the 2014 and 2016 finals.
Bayern Munich, who last won the title in 2020, take on Xabi Alonso's Leverkusen who pipped them to the Bundesliga title last season.
Bayern lead Leverkusen by eight points this season and the two teams played out a goalless draw in the league last weekend.
Group stage table-toppers Liverpool will travel to Paris St Germain for the first leg after the French side humiliated Brest with a 10-0 aggregate win in the play-offs.
Barcelona will play Benfica while Arsenal were drawn against Eredivisie title challengers PSV Eindhoven.
Aston Villa, who last played in the knock-out stage in 1983, have been drawn against Club Brugge while 2023 runners-up Inter Milan play Feyenoord.
CHAMPIONS LEAGUE LAST-16 DRAW
Paris St Germain v Liverpool
Club Brugge v Aston Villa
Real Madrid v Atletico Madrid
PSV Eindhoven v Arsenal
Benfica v Barcelona
Borussia Dortmund v Lille
Bayern Munich v Bayer Leverkusen
Feyenoord v Inter Milan
* Team mentioned second play return leg at home
QUARTER-FINAL DRAW
QF1: PSG/Liverpool v Brugge/Villa
QF2: PSV/Arsenal v Real/Atletico
QF3: Benfica/Barcelona v Dortmund/Lille
QF4: Bayern/Leverkusen v Feyenoord/Inter
* Team mentioned second play return leg at home
SEMI-FINAL DRAW
Semi-final 1: QF2 winners v QF1 winners
Semi-final 2: QF3 winners v QF4 winners
* Team mentioned second play return leg at home
DATES
Last 16: March 4-5 and March 11-12
Quarter-finals: April 8-9 and April 15-16
Semi-finals: April 29-30 and May 6-7
Final: May 31