Federico Valverde and Marco Asensio netted second-half goals as Real Madrid won 2-0 away to Osasuna to cut the gap to LaLiga leaders Barcelona to five points, but the reigning champions had to battle all the way to get their victory.
With Karim Benzema missing through injury, Vinicius Junior had to carry the creative burden for Real Madrid and though he eventually came up trumps for his team, he had to go through plenty of adversity to get there.
- Stream on ESPN+: LaLiga, Bundesliga, more (U.S.)
"He always makes the difference," Real Madrid boss Carlo Ancelotti said of Vinicius' performance. "He's been outstanding, as always. He only lacked the goal."
The 22-year-old Brazilian looked set to open the scoring in the 10th minute but Osasuna keeper Sergio Herrera got enough of a touch on the ball as it was slotted through his legs to steer it across the face of goal and away from danger.
After a bad-tempered first half that saw four players booked, Vinicius had the ball in the net for Real Madrid in the 52nd minute, but the goal was chalked off when he was found to be offside when the ball was played in to him.
Osasuna began to assert themselves, with Moi Gomez hitting the post in the 62nd minute and Jon Moncayola blazing a shot just wide three minutes later, and those misses were to prove costly for the home side.
Vinicius teed up Valverde to score in the 78th minute before netting himself in the 89th, but again his effort was ruled out for offside.
The second goal eventually arrived as Asensio slotted home a pass from teenaged substitute Alvaro Rodriguez in stoppage time to lift Real Madrid to 51 points, five behind Barcelona, who play Cadiz on Sunday.
"We've played a good game, it was important to win and we leave happy to keep LaLiga alive," Ancelotti said. "We've suffered when we had to suffer, we scored at the best moment and we are satisfied."
On the performance of Rodriguez, Ancelotti added: "He is a player that has lots of qualities. He is tall, he has good control of the ball and a great header.
"He can help us as he did today. It's not easy to come into Madrid being young. He has made a difference in 10 minutes. He is going to help us this season, I'm convinced."
Earlier, Villareal slumped to a 4-2 defeat away to Mallorca after midfielder Manu Trigueros was sent off in the 21st minute, while Real Betis beat Real Valladolid 2-1 at home and Celta Vigo grabbed a 1-1 draw away to Real Sociedad.