Real Madrid and Atletico Madrid each passed up the chance to go top of La Liga on Saturday after Barcelona conceded three goals in seven minutes during a surprise 3-1 defeat by Levante.
Lionel Messi converted a first-half penalty at the City of Valencia Stadium for his sixth goal in five games only for Levante to stun the defending champions with an incredible treble shortly after the hour.
Yet Atletico and Sevilla played out a 1-1 draw at the Ramon Sanchez Pizjuan, where Diego Costa missed a penalty, before Real squandered a string of opportunities at the Santiago Bernabeu in a goalless draw against Real Betis.
It means Barca will be relieved to stay at the summit - ahead of Atletico by a point with a game in hand and in front of Real on goal difference - even if their collapse against Levante should offer encouragement to their title rivals.
Meanwhile, Granada will overtake them all if they beat Real Sociedad on Sunday.
“Everything unravelled,” said Barcelona coach Ernesto Valverde. “We didn’t start the second half well, we weren’t creating chances and although they weren’t either they suddenly scored two goals. The third one hurt us a lot.”
Jose Campana and Borja Mayoral scored in the 61st and 63rd minutes before Nemanja Radoja added a third in the 68th to leave their disheveled opponents with too much to do.
After seven wins on the bounce in all competitions, Barca arrived in Valencia as overwhelming favourites, particularly given the irresistible form of Messi, whose goal was the 500th of his career with his left foot.
“Opponents always play us like it is one of the biggest games of the year,” Valverde added. “You have to have an answer.”
After any Barcelona defeat, Valverde’s future is a topic for discussion. Asked if he was surprised by his players or might consider resignation, he said: “No, to both questions.”
To make matters worse, Luis Suarez was forced off in the 41st minute with an injury to his right calf and would now appear to be a doubt for Tuesday’s Champions League game at home to Slavia Prague.
An unfortunate half for Suarez had seen him booked for a foul committed by Arthur Melo but referee Hernandez Hernandez corrected his error after being made aware by VAR.
Messi swept home his penalty after Jorge Miramon brought down Nelson Semedo and Messi might have made it two, but this time Miramon restored some credit by clearing off the line.
Seven-minute blitz floors Barca
Levante began the second half on the front foot but nobody could have predicted what was to follow. First, Pique’s under-hit clearance was punished, as Mayoral and Jose Luis Morales shifted the ball inside to Campana, who struck hard into the corner.
Then a loose Carles Perez header allowed Mayoral space and he did brilliantly to curl past the outstretched right hand of Marc-Andre ter Stegen.
With the home fans still celebrating, Radoja made it three. Barcelona again failed to clear and Radoja’s effort might have been saved had Sergio Busquets, on as a substitute, not caused a cruel deflection.
Messi thought he had launched a comeback when he bundled through and poked in but Antoine Griezmann was offside and Levante might even have made it four late on if Gonzalo Melero been more precise.
It left Real Madrid, Atletico and Sevilla all with the chance to claim top spot but none seized the initiative.
Real are yet to establish a consistent run of results, even if they created more than enough chances to beat Betis and on another day might have scored five.
Eden Hazard saw a much-needed goal ruled out and Sergio Ramos went close too before Karim Benzema skewed wide at the back post from four yards.
The best opportunity fell to Ferland Mendy but, with only Joel Robles to beat, he lifted his finish up, over and wide. Hazard had waved Mendy through and might have wondered why he did not take the ball himself.
Betis rode their luck, particularly when Zouhair Feddal handled in the box, while Vinicius Junior and Ramos hit the goalkeeper amid mad scrambles in injury-time.
Atletico will also rue chances missed, with Costa most guilty, his 72nd-minute penalty saved by Tomas Vaclik after Alvaro Morata cancelled out Franco Vazquez’s opener.