La Liga leaders Barcelona tumbled to an embarrassing 1-0 defeat at Almeria on Sunday, failing to capitalise on Real Madrid's derby draw with Atletico to extend their advantage.
El Bilal Toure's fine first half strike split the teams and earned Almeria their first ever victory over Barca, inflicting only the second defeat of the league campaign on the Catalans.
Xavi Hernandez's side still have a seven-point lead over champions Madrid, but their morale took a further blow following their midweek Europa League exit against Manchester United.
Barca face Madrid in a Clasico Copa del Rey semi-final first leg on Thursday at the Santiago Bernabeu, with their vulnerabilities starting to show.
Victory would have stretched their advantage in the title race to double figures, as they bid to win La Liga for the first time since 2019.
Madrid beat Barcelona in the league in October in their first defeat and Almeria ended Barca's subsequent 13-game unbeaten league run.
"I'm very angry because I think we played our worst game of the season," Xavi told Movistar.
"Above all in the first half, we couldn't move the ball around, we lacked intensity, speed, on a day where we couldn't mess up.
"We did not show the passion (we needed) to win the game. In the second half, yes, but they defended well."
Xavi, already without injured trio Pedri, Ousmane Dembele and Ansu Fati, took a risk and rotated heavily and his team paid the price.
The lowly hosts, starting the game 19th with just one victory in their prior eight league games, were on top and went ahead through Toure's emphatic finish.
The Mali international cushioned a long ball into striker Luis Suarez's path, before spinning and breaking forward at pace.
Suarez lofted a pass over Andreas Christensen and Toure ran on to it, lashing an effort past Marc-Andre ter Stegen and in off the crossbar.
It was only the eighth league goal Barcelona have conceded this season, stopping Ter Stegen adding to his impressive tally of 17 clean sheets.
'We'll calm ourselves'
The hosts kept La Liga top scorer Robert Lewandowski quiet at the other end, unable to trouble Almeria goalkeeper Fernando Martinez.
Defender Araujo, thrown into attack by Xavi in desperation, directed a header inches wide of the far post but that was as close as Barcelona came.
Ter Stegen made a brilliant save to deny Adrian Embarba on the counter and Almeria defended bravely to see out an historic victory.
The goalkeeper said Barcelona would recover ahead of the cup clash against Madrid.
"It's a defeat, it always hurts, it never arrives at a good moment, but we will calm ourselves," said Ter Stegen.
"It's important to charge our batteries for Thursday. We're looking forward and we will achieve what we want to."
Almeria rose to 15th, two points clear of the relegation zone.
"The best team in the league came to us, they're first, and we were capable of blocking them, of taking advantage of the chance we had," Rubi told Movistar.
Elsewhere Jorge Sampaoli's Sevilla twice came from behind but fell to a 3-2 home defeat by Osasuna, leaving them 14th and two points above the relegation zone.
David Garcia headed the visitors in front in the first half as they dominated, but Nemanja Gudelj smashed Sevilla back level with a stunning long range effort.
Fernando's unfortunate own goal put Osasuna back ahead, but Morocco striker Youssef En Nesyri levelled with a fine finish.
A thrilling clash was settled when on loan Barcelona winger Ez Abde produced a fine solo goal with five minutes remaining, whipping his finish across Yassine Bounou and into the far corner.
Osasuna rose to seventh and have a Copa del Rey semi-final against Athletic Bilbao to look forward to on Wednesday.
Girona earned an exciting 3-2 win at Athletic Bilbao to climb into mid-table, inspired by the electric Aleix Garcia, who opened the scoring.
Oscar de Marcos and Mikel Vesga own goals extended Girona's lead, while Athletic hit back through Yuri Berchiche and Raul Garcia grabbed another late on, but could not find an equaliser.
Young Celta Vigo star Gabri Veiga struck twice and set up another for Haris Seferovic in a 3-0 win over Real Valladolid.