Ronaldo headed home his second goal of the game in the 89th minute as Madrid, who twice trailed to battling Osasuna, moved back to within a point of leaders Barcelona with three games remaining.

This was Madrid's 17th win in 18 league encounters at the Bernabeu this season, but they had to do it the hard way after Osasuna went ahead through first-half goals from Carlos Aranda and Krisztian Vadocz.

However, Manuel Pellegrini's men hit back both times through Ronaldo and Marcelo to go into half-time at 2-2 and then, having ridden their luck on occasion after the break, claimed the points when Ronaldo netted his 22nd league goal of the season.

Real Mallorca kept up their bid for a Champions League place with an impressive 3-1 win at Athletic Bilbao.

Gonzalo Castro opened the scoring after 44 minutes for Mallorca but there was still time for Fernando Llorente to equalise before the break.

But Mallorca took control after the break as Jose Nunes scored within four minutes of the restart and Aritz Aduriz netted three minutes later.

The win kept fourth-placed Mallorca two points ahead of Sevilla, who beat a weakened Atletico Madrid 3-1 in a dress rehearsal for this month's Copa del Rey final.

Alvaro Negredo bagged a first-half brace from the penalty spot to seal victory for the Andalusians after Tiago had cancelled out Luis Fabiano's fifth-minute strike.