The visitors came under early pressure, and Thibaut Courtois saved twice in quick succession from Fabian Orellana and Saidy Janko, while Casemiro was fortunate not to concede a penalty. Madrid rallied though, and Mariano Diaz had two goals correctly ruled out for offside before Casemiro was involved again, heading over the crossbar.
The Brazilian put another header wide after half-time and Lucas Vazquez had a shot saved. At the other end, Courtois was called into action again to deny Orellana before Casemiro secured the three points, dispatching his third headed chance from Toni Kroos' delivery.
Time and time again, when Real Madrid are struggling to make the breakthrough, it's a set piece from Kroos which makes the difference. Often, too, it's Casemiro that gets on the end of it. The Brazilian midfielder now has five league goals this season and is Madrid's second top scorer behind Karim Benzema. Kroos, meanwhile, is a relentlessly, metronomically consistent chance creator.
The only player who can match Kroos and Casemiro in terms of point-winning contributions this season is Courtois. Hardly a game goes by when the goalkeeper doesn't make a truly special save, and here there were several. Together, the trio helped make it four wins in a row in La Liga for only the second time this season as Madrid look to overhaul leaders Atletico.
Madrid's injury list is incredible, with nine players absent now. Some of them -- Benzema, Sergio Ramos, Dani Carvajal, Fede Valverde and (at least theoretically) Eden Hazard -- are key men, too. The strains of this strange, intense season are starting to show on the squad, and it's getting harder and harder to see the logic in allowing Martin Odegaard and Luka Jovic to leave in January.
Benzema's absence showed once again just how much Madrid depend on their only regular goalscorer. The team's worst form tends to come without him, as when they lost to Alaves and Shaktar late last year. Tonight's starting XI boast just 20 league goals between them this term, which just isn't enough.
Manager rating out of 10
7 -- Zinedine Zidane barely had a team selection decision to make here, with just 11 senior outfield players available. Isco was, unsurprisingly, the one to miss out. The performance was often flat, but as is so often the case, Zidane was saved by his trusted veterans. The coach made a triple change early, bringing on Isco with youngsters Sergio Arribas and Hugo Duro, who both brought energy in attack.
Player ratings (1-10; 10 = best. Players introduced after 70 minutes get no rating)
GK Thibaut Courtois, 8 -- One of Madrid's best players on the night and all year. He started the match with a string of excellent saves, with more to come later on, keeping the team in the game.
DF Lucas Vazquez, 7 -- Has been a bright spot for Madrid this season, surpassing expectations whether at right-back or on the wing. Had a decent second-half effort saved.
DF Raphael Varane, 7 -- Captained the side. The defence started off shaky, but improved, and Varane later led the defence of the team's one-goal lead.
DF Nacho, 6 -- Has tended to shine against Valladolid, scoring the winning goal here in January last year, but had a quieter night here.
DF Ferland Mendy, 6 -- Not his best game. Got the team into trouble in the second half with a bizarre attempted pass and was bailed out by Courtois. A good late cross for Arribas.
MF Casemiro, 8 -- Lucky to get away with a clumsy challenge inside the box in the first half. Should have done better with his first two headers, both of which were presentable opportunities, but made up for it with the well-taken third.
MF Toni Kroos, 8 -- Has created more opportunities than any other player in La Liga this season. Provided Casemiro with another glorious one here when the Brazilian couldn't keep his header down, and followed up with the ball for the goal.
FW Vinicius Junior, 5 -- A rare run in the team has seen him start the last four league games. Another inconsistent display after looking briefly bright early on. Taken off early.
FW Mariano Diaz, 7 -- A rare chance to impress with Benzema missing. Gets involved in play much less frequently than the Frenchman but gets into some good positions. Had the ball in the net twice, finishing well, but was correctly flagged offside.
MF Isco, 6 -- The only first-team outfield player on the bench. Better than he has been lately when he came on.
FW Sergio Arribas, 7 -- Could have scored if he'd connected with Mendy's cross.
FW Hugo Duro, 6 -- A first call-up with the first team in La Liga, having scored eight times for B-team Castilla this season, but didn't get a chance.