A confident start saw Madrid create a series of early chances. Eden Hazard shot off target and Casemiro went for goal from his own half, while at the other end Thibaut Courtois was alert to a goal-bound cross from Osasuna's Manu Sanchez. Hazard was denied brilliantly by goalkeeper Sergio Herrera, who followed up by keeping out two headers from Militao, before Vinicius Junior shot into the side netting and Chimy Avila had a goal ruled out for offside.
Militao went close again after half time and substitute Rodrygo shot wide, before Militao finally found the net with another header and Casemiro's mis-controlled effort crept in to secure the win.
The first half was a more fluid attacking display than we've seen from Real Madrid in some time. They may not have scored, but there were chances aplenty, and there were moments when the tantalising possibilities offered by a Karim Benzema/Hazard front two -- if only the latter could stay fit -- momentarily became clear. In the end, though, the game became an exercise in perseverance, with Militao making the breakthrough.
There was promise in midfield, too, with youngster Antonio Blanco looking at home alongside Casemiro. Blanco has been rightly tipped as one-to-watch by academy observers for some years and if he maintains this form, he'll give Zinedine Zidane the chance to rest Toni Kroos and Luka Modric more often.
Those chances were not put away in a first half that saw Madrid repeatedly denied by keeper Herrera. That could have come back to haunt them later on, as Osasuna tightened up after the interval, before a late Madrid rally opened the visitors up again.
Manager rating out of 10
8 -- Zidane rested Kroos and Modric with an eye on next week's Champions League second leg, though he was unable to make wholesale changes given that Barcelona's midweek loss put Madrid right back in the title race. An attacking side saw Benzema, Hazard, Vinicius and Marco Asensio all squeezed into the XI. The coach made use of all five changes, too, when freshening up the team in the second half, with Isco, Rodrygo and Miguel Gutierrez all making an impact.
Player ratings (1-10; 10 = best. Players introduced after 70 minutes get no rating)
GK Thibaut Courtois, 7 -- Has only conceded one goal in Madrid's last six games and was genuinely tested just once in the match, dealing well with Sanchez's spinning cross.
DF Alvaro Odriozola, 7 -- One of his better games, offering something going forward even if he'll never convince critics with his defending.
DF Raphael Varane, 6 -- Only played the first 45 minutes before being withdrawn as a precaution after feeling some discomfort ahead of the Chelsea game.
DF Eder Militao, 9 -- A misplaced first-half back-pass almost ended up in his own net, but it was all positive from then on. Could have scored with two headers and another acrobatic effort before he eventually broke the deadlock. Has exceeded all expectations since coming into the team last month.
DF Marcelo, 7 -- A precise delivery presented Hazard with the best opportunity of the first half.
MF Casemiro, 7 -- Feeling confident if his shot from beyond the halfway line is anything to go by. Got lucky with his goal as a heavy first touch from Benzema's pass beat the keeper. That's seven goals for the season, not bad for a "defensive" midfielder.
MF Antonio Blanco, 8 -- Did well when he started against Cadiz and looked even better here. A hugely promising player, absolutely comfortable at this level, who moves the ball with a calm authority.
FW Eden Hazard, 7 -- Played 71 minutes in his first start since January. Built on his minutes off the bench this week. An ingenious first-half backheel, and had a goal-bound shot tipped over.
FW Marco Asensio, 7 -- Played on the right. Busy in the first half, including one shot over the bar, but still doesn't entirely convince for 90 minutes.
FW Vinicius Junior, 6 -- Struggled to make a consistent impact. A shot into the side netting after half an hour was his only involvement of note, and he was taken off early.
FW Karim Benzema, 7 -- Clearly enjoys the company of Hazard. Played a lovely through-ball later for Casemiro to secure the three points.
DF Nacho Fernandez, 7 -- Replaced Varane at half-time and wasn't unduly tested.
FW Rodrygo, 7 -- Immediately looked more likely to score than his compatriot Vinicius.
DF Miguel Gutierrez, 7 -- A like-for-like swap with Marcelo. Burst forward straight away, finding Asensio on the left.
MF Isco, NR -- Came on for Hazard. Went close to scoring Madrid's third after some quick footwork in the box.
FW Sergio Arribas, NR -- Played the last few minutes.