Rayo Vallecano came from behind to beat Real Madrid 3-2 on Monday with the champions failing to reclaim top spot in the standings after two consecutive games without a win and suffering their first loss in LaLiga this season.
Barcelona are top on 34 points, two ahead of Real Madrid and ten ahead of third-placed Atletico Madrid. Following their third consecutive win, Rayo climbed to eighth place, two points off the European qualification spots.
Since losing Ballon d'Or winning striker Karim Benzema to a thigh injury last month, Real have won only one of their last three games in all competitions.
On Monday evening, Real missed several chances in a end-to-end affair against Rayo who are one of the most prolific goalscoring teams in LaLiga this season.
"I wasn't surprised because we all know how they play, they were better and more precise than us today and it's a well deserved win for them," Real manager Carlo Ancelotti told Movistar Plus.
"We lost too many challenges. They were overwhelming. It doesn't matter if you have more quality if your rivals have more intensity than you.
"I think we started the season well but the team has felt the exhausting schedule ahead of the World Cup."
Roared on by their passionate fans at the claustrophobic Estadio de Vallecas, the hosts opened the scoring five minutes into the game when midfielder Santi Comesana finished from inside the box a quick counter-attack, but Real went ahead with two goals in four minutes.
The first came in the 37th minute when Croatian playmaker Luka Modric converted a penalty after Marco Asensio was fouled inside the box and the second came almost four minutes later with a towering header by Eder Militao.
However, Rayo forward Alvaro Garcia scored the equaliser just before halftime, scrambling home a loose ball.
Vinicius Jr and Rodrygo then wasted several chances before and after the break that could have put Real back in front.
The second half was a feisty and ill-tempered affair, with both teams given three bookings each and Rayo manager Andoni Iraola shown a red card due to improper conduct following several outbursts at the referee.
But Rayo's resilience was rewarded as they were then given a penalty of their own in the 67th minute after VAR spotted a handball by defender Dani Carvajal inside the area. Real's Thibaut Courtois stopped Oscar Trejo's effort but the kick had to be retaken because the goalkeeper left his line too early.
Trejo didn't waste his second chance, scoring what proved to be the winner with a tidy finish to the goalkeeper's left.