Barcelona's faint hopes of catching LaLiga leaders Real Madrid suffered a huge blow as it slipped to a shock 1-0 home defeat by relegation-threatened Cadiz on Monday.
Real's last-gasp victory at Sevilla on Sunday extended its advantage over Barca in second to 15 points, but Xavi Hernandez's in-form side was expected to close the gap by beating Cadiz at the Camp Nou.
The hosts never really got going, however, in front of a disgruntled crowd and Cadiz had the better first-half openings with Lucas Perez missing a glorious opportunity to break the deadlock.
Cadiz kept coming after the interval and Perez scored in the 48th minute before the visitors wasted further big chances to extend its advantage - Alex Fernandez slotting wide when it looked easier to score.
Barca piled on the pressure but lacked that killer pass as they slipped to a first defeat in 16 LaLiga matches stretching back to December. It remained on 60 points from 31 games, 15 behind Real who has one hand on the trophy.
"We had the chances, more than enough to take the three points, but we have to rise from this and think about the next games," Xavi said.
"We have to change our form as soon as possible. We have got back into the Champions League places but we have to keep going.
"It's a very bad week for us and we need to change the dynamic as soon as possible."
Aside from its shock Europa League exit at home to Eintracht Frankfurt last week, Barca has enjoyed a revival under Xavi in recent months to climb back into the title race.
Not only has it gone 16 matches unbeaten in the league, it had won its previous seven LaLiga games in a row, scoring 22 goals in the process.
Other than Ousmane Dembele's shot, Barca did not look like scoring in the opening period, with Cadiz, looking for their first-ever win in the Nou Camp, much the better side.
The decisive strike came at the third attempt after Marc-Andre ter Stegen made a fine double save, with Perez picking the perfect moment to score his first league goal of the season.
Ter Stegen saved Barca on several occasions before substitute Pierre-Emerick Aubameyang almost snatched a point for Barcelona who have now lost two home games in a row for the first time since 2003.