For the first time in 20 La Liga matches this season Barcelona tasted defeat on Saturday, losing 3-2 at Real Sociedad to a stoppage-time goal from Imanol Agirretxe.
Barca dropped points in only one of its 19 games in the first half of the season, and the Catalans looked to be on their way to another easy win after going up 2-0 in the opening 25 minutes.
Lionel Messi scored seven minutes into the game after being set up by Andres Iniesta, while a flowing build up in the 25th minute led to the second goal as Dani Alves played the ball through the face of goal to Pedro, who slid in and applied the finishing touch.
Both Messi and Jordi Alba were denied by the post as Barca continued to dominate, but Sociedad found a way back into the game shortly before halftime through Gonzalo Castro, who made it 2-1 in the 41st minute.
Barca was reduced to 10 men in the 56th when Gerard Pique collected his second yellow card for a foul on Carlos Vela, and the home side equalized six minutes later as Castro netted his second goal of the contest from a Asier Illarramendi cross.
It looked like the visitors would hold on for a point, but Sociedad pulled off the biggest surprise of the season to this point as Agirretxe latched on to a cross from Carlos Martinez and tucked the ball inside the right post shortly before the final whistle.
Sociedad remains in the middle of the table, while Atletico Madrid will have the chance to close the gap on Barcelona with a win against Levante on Sunday.
Granada 2, Rayo Vallecano 0
Granada, Spain - Granada moved three points above the bottom three on Saturday after notching a 2-0 home win against Rayo Vallecano.
Rayo was unlucky to go behind in the 24th minute due to an own goal from Jordi Amat, but Granada began to take over in the second half and almost added to its lead in the 64th when Odion Ighalo went close from a tight angle.
But Recio helped to secure all three points 10 minutes from time when he found the bottom corner of the net with a shot from outside the penalty area.
Getafe 1, Sevilla 1
Getafe, Spain - Sevilla had to settle for a 1-1 draw at Getafe on Saturday due in part to a goalkeeping error from Andres Palop.
Sevilla started well and took the lead five minutes before halftime when Ivan Rakitic released Jose Antonio Reyes into the penalty area and he slid the ball past goalkeeper Miguel Moya.
But Palop was largely responsible for Getafe equalizing shortly before halftime when a free kick from Adrian Colunga sailed over the head of Palop and into the net with the keeper guilty of poor positioning.
Alvaro Negredo had the best chance to break the deadlock for Sevilla after halftime, but he fired the ball over the net after being played in on goal by Rakitic.
Malaga 1, Celta Vigo 1
Malaga, Spain - Malaga remains in fifth place after being held to a 1-1 draw at Celta Vigo on Saturday as Augusto Fernandez tallied the equalizer with 15 minutes to play for the home side.
Malaga went in front through Martin Demichelis in the 37th minute when he scored from close range after Roque Santa Cruz served the ball to the front of the net.
But the hosts leveled the contest in the 75th minute as Fernandez found room inside the penalty area to score from 12 yards.
Malaga had two chances in the final 10 minutes to claim the win, but substitute Duda saw his shot sail just wide of the left post before Demichelis had a header saved in the 90th minute.