A dominant first-half display saw Atletico keeper Jan Oblak push Karim Benzema's curling left-footed shot onto the post early on, before Casemiro gave Real Madrid the lead with a header from Toni Kroos' pinpoint corner.
Atletico substitute Thomas Lemar put a great chance to equalise into the side netting after half time. Dani Carvajal marked his return from injury with a thunderous shot which flew off the woodwork, onto Oblak's back and into the net for an own goal, and then Oblak denied Lucas Vazquez late on.
Atletico Madrid had only conceded two goals in La Liga all season before this and hadn't been behind at any stage. Beyond that, they were on a 26-game unbeaten league run stretching back to Real's 1-0 win in this fixture in February.
It was some achievement then for Real Madrid to score early, dominate the first half in the way they did, and finish the job in the second half with a goal that meant they'd scored as many against their neighbours as every other team had managed in their previous 10 league matches.
Crucial to that was the midfield performance. The trio of Casemiro, Luka Modric and Kroos overwhelmed their Atletico counterparts, including the in-form duo of Koke and Marcos Llorente, with a display that was reminiscent of Zinedine Zidane's very best Madrid teams.
It's been an overwhelmingly positive week for Real Madrid in which their troubles, both domestic and European, have been put firmly behind them, and as such there were no real negatives here.
One concern going forward will be the tiredness of the team -- they're back in action on Tuesday against Athletic Bilbao -- with Zidane having used essentially the same starting XI, with minor changes, for all three games this week.
Manager rating out of 10
8 -- Zidane has backed his senior core of players to get the job done in a busy week, and here it was no different. Only one change was made to the team that beat Borussia Monchengladbach, with Carvajal, back from injury, replacing Rodrygo. Zidane looked to cope with the threat of Yannick Carrasco by deploying he and Lucas Vazquez together on the right.
Player ratings (1-10; 10 = best. Players introduced after 70 minutes get no rating)
GK Thibaut Courtois, 7 -- His goal was so well protected that Courtois didn't have a save to make until he pushed away Saul Niguez's late header.
DF Dani Carvajal, 8 -- Marked his return from injury -- and recent fatherhood -- with a screamer of a shot for Madrid's second, at an important time. There was some luck about the way the ball hit the net, but that shouldn't take away from the quality of the strike. Lasted almost 80 minutes.
DF Sergio Ramos, 7 -- Now the player with most Madrid derby appearances, another record for his collection. Had a chance to score but put his second-half free kick into the wall.
DF Ferland Mendy, 6 -- Gave the ball away in a dangerous position with just a minute played. In attack, he was almost played in by Benzema before half time. Otherwise solid.
MF Casemiro, 8 -- A well-placed headed goal. Amazingly, his scoring record is better than Modric and Kroos -- with 26 to their 24 and 19 -- despite theoretically being a more defensive player. Booked for taking out Felix.
MF Toni Kroos, 8 -- Provided the delivery for the opener with a trademark corner and helped cement Madrid's midfield domination throughout. Always on the ball.
MF Luka Modric, 8 -- Delivered again. Modric really shouldn't be playing three games at this level in a week at 35, but on this form he's too good to rest in a Madrid derby.
FW Vinicius Junior, 6 -- A bust-up with Koke on the half time whistle was his most notable contribution. Worked hard but hasn't scored since October and didn't look like changing that here.
FW Lucas Vazquez, 7 -- Another impressive performance, after his best of the season against Monchengladbach in midweek. Could have scored at the end. On this form, Zidane must pick him, even with Carvajal back.
FW Karim Benzema, 7 -- Started well, hitting the woodwork inside the first 10 minutes with a glorious effort. Then could have done better with a chance at the far post. Quieter later on.
FW Marco Asensio, NR -- Played the last 10 minutes, in for a tiring Carvajal.
FW Rodrygo, NR -- Replaced Vinicius to help see out the game.
MF Fede Valverde, NR -- His first minutes since early November.