A 1-2 defeat at home to Villarreal late Sunday leaves Barcelona eight points behind Spanish leaders Real Madrid.
The late defeat - Jon Dahl Tomasson scored Villarreal's winner 10 minutes from time - leaves Real well placed to claim their 31st title.
Two weeks ago Barca had managed to reduce Real's lead to just two points, but defeats against Atletico Madrid and Villarreal have ruined the fight back of Frank Rijkaard's team.
"This is an important win for us," Villarreal captain Marcos Senna told Canal Plus. "Now we are going to try to take second place away from them."
Barca now have 54 points from 27 games and third-placed Villarreal have 50. Real have 62 after Saturday's come-from-behind defeat of Espanyol.
Without injured Lionel Messi, Barca looked ponderous and predictable in attack, with Thierry Henry turning in another dull display.
Villarreal made a confident start and went ahead in the 30th minute through a Senna penalty, after Guille Franco had been pulled down by Barca keeper Victor Valdes.
Xavi Hernandez made it 1-1 in the 67th minute after a clever run down the left by Andres Iniesta.
But Barca never looked comfortable against their well-drilled opponents, who refused to settle for the draw.
Villarreal were rewarded for their ambition with the winning goal in the 80th minute. Santi Cazorla played Sebastian Egueren through, and the latter centred for supersub Tomasson to calmly score.
Ronaldinho hit the crossbar with an injury-time free kick, with Barca running out of steam and ideas.
In fourth place, on 44 points, are Atletico Madrid, who lost 2-1 in Zaragoza Saturday.
Racing Santander moved up to fifth Sunday with a 3-0 thrashing of Betis, thanks to second-half goals from Aldo Duscher, Ezequiel Garay and Mohamed Tchite.
Sevilla, for their part, recovered from Tuesday's Champions League elimination against Fenerbahce by moving up to sixth with a 2-1 defeat of bottom team Levante.
Mustapha Riga gave Levante a shock lead after just four minutes with a long shot that surprised Sevilla keeper Andres Palop.
From then on Sevilla took control and in the 28th minute Seydou Keita made it 1-1 by heading in a centre from Jesus Navas. Four minutes into the second half, Luis Fabiano scored the winner with his left foot, on a pass from Enzo Maresca.
The latest goal gives Luis Fabiano a total of 20 in La Liga, and leaves him well out on top of the scorers' chart.
Sunday's other games all had an impact on the relegation situation.
Doomed Levante stay bottom with just 19 points after their defeat in Seville. Murcia, still on 23, also have a doomed look about them after crashing 0-3 at home to Getafe.
It was a dismal debut on the Murcia bench for former Spain boss Javier Clemente, who took over from Lucas Alcaraz Thursday.
Third from bottom, on 29 points, are Recreativo Huelva, who were slaughtered 7-1 by rampant Mallorca, with Venezuelan playmaker Juan Arango banging in his first ever Liga hat-trick.
Deportivo Coruna have 31 points after battling out a 2-2 draw away to troubled Valencia Sunday.
Juan Mata and David Villa scored early goals for Valencia, only for Sergio Gonzalez and Angel Lafita to hit back for Deportivo before halftime.
A tense, erratic second half produced no more goals.
Also on 31 points are Valladolid, who lost 2-0 in Bilbao thanks to two goals from Igor Gabilondo.
Another team doing well to stay above the drop zone with Bilbao are Osasuna, 2-1 winners over Almeria.