Real Madrid are now just two points ahead of Barcelona in a revitalized Spanish Liga after a shock 1-0 home defeat against Getafe late on Sunday.
Troubled Real have lost three of their last four league games and have seen Barcelona whittle their lead from nine points to just two in the last month.
The whites - whose perfect home record has been ruined - now have 56 points from 25 games. Barca have 54 points after caning Levante 5- 1 earlier Sunday.
The Real-Getafe game was controversially decided in the 64th minute.
Arjen Robben seemed to have given Real the lead after turning in a centre from Raul Gonzalez, only to be ruled offside.
Getafe midfielder Francisco Casquero took advantage of Real's confusion to launch a quick counterattack. He squared the ball to Pablo Hernandez, who crossed for Ikechukwu Uche to score with a near-post drive.
Real had gone from 1-0 to 0-1 in 30 seconds and were unable to recover from the blow. Getafe held out for their first-ever win in the Bernabeu with few problems.
Real had looked lacklustre throughout the match, as if still suffering a hangover from Tuesday's 2-1 Champions League defeat at AS Roma.
Getafe keeper Roberto Abbondanzieri - who was well protected by a solid defence - had few saves to make.
"It was the kind of goal a team of four-year-olds would give away," veteran Real midfielder Guti moaned to Canal Plus at the end. It just should not happen."
Earlier Sunday, Barcelona kept up the pressure on Real with an emphatic, 5-1 trouncing of bottom team Levante.
Samuel Eto'o banged in three goals, and Lionel Messi turned in another delightful display.
Eto'o tore the ragged Levante defence apart to claim a second-half hat-trick, after Xavi Hernandez and Messi had given Barca a half-time lead.
Xavi had opened the scoring in the 15th minute, putting away the rebound after Eto'o had powered his way into the Levante area.
Levante striker Mustapha Riga made it 1-1 from the penalty spot in the 41st minute, after Gianluca Zambrotta clumsily handled the ball in the box.
But just three minutes later, Messi restored Barca's lead with a left-footed drive after being set up by Xavi.
In the second half, the unstoppable Messi twice set up Eto'o to score. The Cameroon striker completed his hat-trick with a clever centre from substitute Bojan Krkic.
Earlier Sunday, Villarreal had given their Champions League hopes a massive boost with a come-from-behind, 2-1 win in Bilbao.
To make the day even sweeter for Villarreal, rivals Atletico Madrid and Espanyol both lost on the road, 3-1 at Osasuna and 2-0 at Deportivo Coruna.
These results leave Villarreal in third place with 46 points from
25 games, eight points behind second-place Barca.
Atletico Madrid stay fourth on 41 points. Espanyol and Sevilla - who thrashed Zaragoza 5-0 Saturday - share fifth place on 39 points.
Villarreal had to work hard for their win in Bilbao. Young
Fernando Llorente shot the hosts ahead with his left foot after just four minutes.
The visitors came out for the second half breathing fire, and
Guille Franco made it 1-1 in the 66th minute with a precise, right- footed drive.
Villarreal's winner with just six minutes left had a touch of good fortune about it. Defender Joan Capdevila shot from the left into a crowded penalty area, where the ball deflected in off Bilbao defender Javi Martinez.
Atletico Madrid, meanwhile, were continuing their foul form in Pamplona.
They were down 2-0 after just five minutes, thanks to quick-fire goals from Osasuna youngsters Enrique Sola and Carlos Vela.
Diego Forlan pulled a goal back for Atletico, only for Hector Font to make it 3-1, 14 minutes from time.
Espanyol were also conceding early goals in La Coruna, scored by Febricio Coloccini and Angel Lafita. Espanyol failed to react and could have lost by more goals in the end.
Racing Santander are now just one point behind Espanyol and Sevilla - in seventh place on 38 points - after a hard-fought, 1-0 defeat of Almeria.
The only goal in Santander was scored by Mohamed Tchite in the
Sunday's early games also saw a valuable 1-0 win for Valladolid in Murcia and a 1-1 draw between Mallorca and Betis.
Levante remain bottom with just 16 points; then come Murcia on 23 and Deportivo on 27.