A toothless and haggard Real Madrid slumped to a humiliating 10th Liga defeat of the season on Sunday as they lost 1-0 at struggling neighbours Rayo Vallecano, who began the weekend bottom of the standings but dominated the game.
The only goal came when Adri Embarba sent Real goalkeeper Thibaut Courtois the wrong way with a penalty midway through the first half, giving Rayo a deserved lead after an ambitious start in front of a typically raucous home crowd.
The spot kick, given for a foul by Jesus Vallejo on Javi Guerra, was awarded following a VAR review after the referee had waved play on and Gareth Bale had narrowly failed to score as Madrid counter-attacked.
Real later had a goal from Mariano ruled out for a clear offside, one of the rare occasions in the game in which Zinedine Zidane's side troubled the hosts, who looked far likelier to score again than concede a goal to Madrid's toothless attack.
"We did nothing today on any level, from the first minute until the last," Zidane told reporters.
"Sometimes you are not able to score but today we didn't even create chances, we did nothing well. We have to all be angry with our performance. I am angry because we gave an awful image of ourselves."
Madrid are third in the standings on 65 points after 35 games, nine behind second-placed Atletico Madrid and 18 adrift of champions Barcelona, and look destined to finish third for the second season in a row.
Rayo moved above SD Huesca to 19th on 31 points and are still six away from escaping the relegation zone, but their supporters showed they believe they can still avoid the drop, chanting "Yes we can" when the final whistle blew.
It was Rayo's first win over their illustrious neighbours since 1997, when Fabio Capello was in charge of Madrid.
The build up to the game was dominated by Real's refusal to allow Rayo's top scorer Raul de Tomas, who is on loan from Zidane's side and prevented from facing his parent club due to a clause in his contract, to turn out for the home side.
Real were also without their top scorer as Karim Benzema, who had netted 10 times in his last eight games, was missing with a hamstring injury, while captain Sergio Ramos was also out.
Madrid's attack was lead by the inexperienced Mariano and out-of-form Bale and, despite the huge gap in riches between the two sides, Rayo always looked in control and were well worthy of the victory.
"We didn't suffer much but that shouldn't take anything away from us," said Rayo coach Paco Jemez, who had lost his previous eight games against Madrid in his previous spell with the club, including a harrowing 10-2 defeat in 2015.
"We played a spectacular game in every aspect. I dreamt once that I would never beat Real Madrid in my entire life but now we have done it I can die happy."
Bayern stumble to 1-1 draw at struggling Nuremberg
Bayern Munich stumbled to a 1-1 draw at relegation-threatened Nuremberg on Sunday to leave the Bundesliga title race wide open with three games left in the season.
Serge Gnabry rescued a point for Bayern with a 75th minute volley after the hosts, who also missed a last-minute penalty, took an unexpected lead after the break through Matheus Pereira.
The result leaves Bayern top on 71 points with Borussia Dortmund in second place on 69 after Saturday's 4-2 home loss to Schalke 04 in the Ruhr valley derby.
Third-placed RB Leipzig, who have secured a Champions League spot for next season, are on 64.
Bayern, buoyed by Dortmund's slip-up, knew a win at Nuremberg could potentially see them secure the title as early as next week as it would put them four points ahead of their title rivals as they chase a league and cup double.
"We had a tough German Cup game in midweek and maybe we were not that fresh," Bayern coach Niko Kovac told reporters referring to their 3-2 semi-final win over Werder Bremen on Wednesday.
"Nuremberg did it well and fought for every ball. They made our life difficult from the first to the last minute. It is frustrating because we could have gone four points clear."
"Now we must put this behind us as quickly as possible and win all three remaining games," said Kovac, who could be without James Rodriguez after the Colombian was forced off injured only 15 minutes after coming on as a second-half substitute.
Bayern were dominant, as expected, and hit the woodwork through David Alaba in the first half.
But it was the home side who struck first with Pereira firing in on the rebound after Bayern keeper Sven Ulreich had blocked a shot three minutes after the break.
The champions were visibly rattled and it took them some time to recover from the setback before retaking the initiative.
After several missed chances, including a James Rodriguez free kick that keeper Christian Mathenia tipped onto the bar, substitute Gnabry finally beat the Nuremberg defence at the far post, beautifully chipping a volley over the keeper in the 74th.
Nuremberg had the chance to win with a penalty awarded in the 89th minute but Tim Leibold hit the post.
Bayern responded by creating a last chance of their own but Kingsley Coman failed to beat Mathenia in a one-on-one in the fifth minute of stoppage time.
While Nuremberg fans will praise their 17th-placed team's performance, the draw leaves them five points behind the relegation playoff spot occupied by VfB Stuttgart.
AC Milan's Champions League hopes hit by Torino defeat
AC Milan’s hopes of qualifying for next season's Champions League suffered a setback after they were beaten 2-0 by Torino on Sunday, their first Serie A defeat to the Turin club since November 2001.
An Andrea Belotti penalty and Alex Berenguer strike in the second half put Walter Mazzarri’s side in charge before Milan captain Alessio Romagnoli was sent off late on for dissent.
The win lifted Torino to 56 points, level with Milan, but the Turin club moved ahead of Gennaro Gattuso’s side and Atalanta into fifth place due to their superior head-to-head record over both sides.
“Things aren’t going our way, we are struggling, but I saw the performance we needed," Gattuso told Sky Sport Italia.
"Torino force you to play badly, we created chances, but when you give away a penalty in such a naive manner, you’re going to lose your temper.
“For a while we were used to knowing how to suffer for a result, but now something keeps happening and the team struggles to react."
Roma currently occupy the fourth and final Champions League spot on 58 points, but Atalanta (56) have the chance to overtake them by beating Udinese on Monday.
Gattuso is facing increasing pressure to keep his job after his side picked up just one win in their last eight games in all competitions.
In contrast, Torino are now unbeaten in six games, confirming their status as the surprise package in this season’s race for a top four finish in Serie A.
"We are having less fun than two months ago and that takes a toll. We’re not sharp, we think too much and that saps your enthusiasm," Gattuso added.
“This is why I say that I can’t get in the heads of the players, as I want them to have the eye of the tiger, a constant grit and determination, but it’s not happening.
“I am tied to results, I am responsible. We are not only having embarrassing results for our team, we’re embarrassing an historic club."
Mazzarri was sent to the stands for protests early in the second half but his side took the lead soon after when Franck Kessie pushed Armando Izzo in the back to concede a penalty, which Belotti converted calmly.
Milan came close to an equaliser as Tiemoue Bakayoko’s header struck the crossbar, but Torino soon doubled their lead when Berenguer gathered a poor headed clearance from Mateo Musacchio before firing a volley into the roof of the net.
Things went from bad to worse for the visitors when Romagnoli was shown a red card for sarcastically applauding a refereeing decision.
With four rounds remaining, just three points separate Roma in fourth place from Lazio in eighth.