- Álvaro Morata (4', 46')
- Antoine Griezmann (18')
- Toni Kroos (35')
Morata opened the scoring in the fourth minute with a towering header from a Samuel Lino cross and Antoine Griezmann extended their lead with another header in the 18th minute, from a Saul Niguez cross.
Real's Toni Kroos struck home from the edge of the box in the 35th minute but Morata headed Atletico's third in the first minute of the second-half, from another cross by Saul.
With one game in hand, Atletico moved up to fifth place in the LaLiga standings on 10 points, while Real Madrid, who entered the weekend as leaders, are now third on 15 points, one behind Barcelona and Girona.
Diego Simeone's Atletico dominated proceedings for most of the match and spent the final minutes of the game passing the ball sideways to each other as their delirious fans chanted "Ole, ole, ole" in a thunderous show of support.
After Morata had scored the opener, his teammate Jose Maria Gimenez wasted a golden opportunity in the 10th minute, missing a close-range header from a corner kick sent in by Griezmann, who himself headed in the second goal eight minutes later.
Midfielder Eduardo Camavinga had Real's first chance in the 30th minute, with a curling shot from range that was deflected to a corner.
Goalkeeper Jan Oblak denied a Federico Valverde first-touch strike from the corner and started off a quick counter-attack that almost ended with Atletico's third, with goalkeeper Kepa Arrizabalaga making a brilliant one-handed save of a Saul strike.
Real's Kroos then made it 2-1 before Camavinga had a goal ruled out just before the break for offside in the build-up.
Real struggled to create any more chances after Morata's second goal in the opening moments of the second half.
"Very happy for all these people that came here today and delivered this amazing support", Morata told DAZN.
"I said the other day, the fans were going to play the most important role. That's how it has been. It's been an incredible atmosphere."
- Javier Alberola Rojas