Real Valladolid dented Barcelona's title bid with a 1-0 win, while Atletico Madrid have momentarily gone top after beating Celta Vigo 2-0.
The champions had defeated Almeria 4-1 last week but the score flattered Gerardo Martino's men after a sluggish display and they were even worse at Estadio Jose Zorrilla on Saturday.
Valladolid goalkeeper Diego Marino produced a good performance to continually deny Lionel Messi, while Neymar missed a great chance in the second half.
Fausto Rossi's 17th-minute strike was enough for the hosts, as the Italian pounced on a loose ball in the area following a kind ricochet.
Barca attempted to pile on late pressure in search of a point but Valladolid went the closest to netting in the final stages, as Oscar Gonzalez knocked Vladet Rama's cutback over the crossbar.
The loss leaves Barcelona a point behind Real Madrid in the title race but Carlo Ancelotti's men welcome Levante to Santiago Bernabeu on Saturday.
Real will begin the day in second, however, after Atletico's win at Celta lifted them above their city rivals due to having a better head-to-head record.
Diego Simeone was without the suspended Diego Costa after his yellow card for simulation against Real Madrid was upheld but David Villa ensured his international team-mate was not missed.
After a goalless and unspectacular first half, the former Barcelona star latched on to Jonny Castro's disastrous backpass and slotted past Yoel with confidence.
Celta were still reeling from that opening goal when Villa netted a second, coolly stroking an inch-perfect finish into the bottom-left corner following Jose Sosa's right-wing cross.
Whatever happens with Real on Sunday, Atletico will at least end the weekend in second as they look to maintain a title challenge going into the final stages of the season.
Villarreal's slim chances of securing a UEFA Champions League place took a serious hit in Saturday's 2-0 loss at struggling Granada, keeping them six points behind Athletic Bilbao.
Fran Rico got things moving for the hosts as he slotted in a 23rd-minute penalty after Bruno Soriano tripped Riki and it got even worse for Villarreal before the break.
Rico turned provider in the 33rd minute as he delivered an excellent throughball over the Villarreal defence and Youssef El-Arabi duly found the net, with Granada holding on to the win with relative ease.
At the bottom of the table Real Betis gave their fans a rare win to celebrate as they beat visitors Getafe 2-0, only their fourth league triumph of the season, but they remain eight points adrift of those just above the relegation zone.