By Peter ORourke
Last Updated: 01/01/70 1:00am
Real, still reeling from their UEFA Champions League exit to Monaco in midweek, got off to the worst possible start when Valdo, who is on loan at Osasuna from Real, scored from close range on two minutes after a terrible defensive blunder.
The hosts suffered a blow midway through the first half when top scorer Ronaldo was forced off with a recurrence of a hamstring injury.
Osasuna added a second a minute before the break with Pablo Garcia expertly lobbing home after Iker Casillas flapped at a long throw.
The visitors then made sure of the win on the hour when Valdo crossed for Moha to head powerfully home at the far post.
Real left the pitch to a chorus of boos and the defeat is sure to increase the pressure on under-fire coach Carlos Queiroz.
Valencia capitalised on Real's defeat to go top of the table by two points with a narrow 1-0 win at Real Zaragoza.
Miguel Angel Augulo netted the all-important winning goal for Valencia on 67 minutes to lift them above Real at the top of the table.
Deportivo La Coruna kept their slim title hopes alive and rounded off a good week with an impressive 2-0 win at Villarreal.
Uruguayan star Walter Pandiani fired Deportivo in front on 37 minutes and Diego Tristan wrapped up the win with the second in the final minute.
The win lifts Deportivo up to third place in the table above Barcelona.
Real Mallorca boosted their survival hopes with a surprise 2-0 win at Real Betis.
Cameroon ace Samuel Eto'o opened the scoring after just 14 minutes and Jesus Perera added a second five minutes into the second half to seal the win.
Real Soceidad climbed further away from trouble with a narrow victory over bottom of the table Real Murcia.
Turkish hit-man Nihat Kahveci was the hero for Sociedad with two second half goals after 64 and 88 minutes.
Athletic Bilbao climbed up to fifth place in the table with a late 2-1 win over Racing Santander.
Igor Iraola fired Bilbao in front five minutes before the break, but Javi Guerrero levelled matters 12 minutes from time.
The game looked set to end all-square until Francisco Yeste popped up in the dying moments to net the winner for Bilbao.
Espanyol earned a precious point in their battle against the drop after a 1-1 draw with Albacete.
Pablo Redondo gave Albacete the lead on 21 minutes, but Maxi secured a draw for Espanyol with a 70th minute leveller.