Match ends, Real Sociedad 1, Barcelona 0.
David Moyes's Real Sociedad stopped Barcelona going top of La Liga thanks to an early own goal from Jordi Alba.
Real Madrid's 2-1 defeat at Valencia earlier in the day would have allowed the Catalans to edge ahead in the title race if they had won.
But coach Luis Enrique started with Lionel Messi, Neymar and Dani Alves on the bench following the festive break.
And they were unable to inspire a fightback as Moyes secured a memorable second win as Sociedad manager.
Messi, Neymar and Alves only returned to training last Friday after an extended break in South America during the league's Christmas shutdown.
Enrique took the gamble of starting without them for a fixture that has proved tricky for Barcelona in the past.
And so it proved again with their winless run at Anoeta now extended to six games.
In Moyes's previous two home La Liga games, former Arsenal striker Carlos Vela had struck in the opening five minutes.
And while there was to be no repeat for Vela, Sociedad were still ahead after just two minutes as Alba headed a cross from Sergio Canales past his own keeper.
For a team which had already beaten Real Madrid and defending champions Atletico Madrid in San Sebastian this season, it was the perfect start.
Sociedad have been difficult to beat under Moyes, with just two losses in their previous seven matches since the former Manchester United and Everton boss took over in November, and they clung tenaciously to their lead.
They were helped by an insipid first-half performance from Barcelona, who rarely threatened an equaliser.
Sociedad went closest to a second goal when Canales turned sharply and tested former Socieded keeper Claudio Bravo at his near post.
Not surprisingly, Enrique sent on Messi at the start of the second half and waited just a further 12 minutes to introduce Neymar to try and spark an improvement.
Barcelona increasingly dominated possession and began to camp around the Sociedad penalty area.
But with a wall of blue and white shirts to pass, they could not turn their pressure into any meaningful chances.
Sociedad defended superbly with goalkeeper Geronimo Rulli making his one real save four minutes from time when dashing out to save at the feet of Luis Suarez as Moyes's side held on to move up to 13th in the table - five points above the drop zone.
Barcelona's next La Liga game is against champions Atletico Madrid next Sunday.
- 6Martínez BerridiBooked at 43mins
- 24De la Bella
- 5BergaraBooked at 90mins
- 8GraneroBooked at 51mins
- 10Prieto Argarate
- 16CanalesSubstituted forBerchiche Izetaat 90+3'minutes
- 18CastroSubstituted forFinnbogasonat 66'minutesBooked at 89mins
- 11VelaBooked at 39minsSubstituted forPardo Gutiérrezat 90'minutes
- 14Pardo Gutiérrez
- 19Berchiche Izeta
- 23Gaztañaga Arrospide
- 24MathieuBooked at 34minsSubstituted forAlves da Silvaat 70'minutesBooked at 76mins
- 18AlbaBooked at 89mins
- 31El HaddadiSubstituted forMessiat 45'minutes
- 7PedroSubstituted forNeymarat 58'minutesBooked at 90mins
- 1ter Stegen
- 22Alves da Silva
- Carlos del Cerro Grande
- Shots on Target
Second Half ends, Real Sociedad 1, Barcelona 0.
Foul by Dani Alves (Barcelona).
Esteban Granero (Real Sociedad) wins a free kick on the left wing.
Substitution, Real Sociedad. Yuri replaces Sergio Canales.
Neymar (Barcelona) is shown the yellow card for a bad foul.
Foul by Neymar (Barcelona).
Gerónimo Rulli (Real Sociedad) wins a free kick in the defensive half.
Markel Bergara (Real Sociedad) is shown the yellow card.
Lionel Messi (Barcelona) wins a free kick in the attacking half.
Foul by Esteban Granero (Real Sociedad).
Javier Mascherano (Barcelona) wins a free kick in the defensive half.
Foul by Xabi Prieto (Real Sociedad).
Substitution, Real Sociedad. Rubén Pardo replaces Carlos Vela.
Delay over. They are ready to continue.
Delay in match Carlos Vela (Real Sociedad) because of an injury.
Jordi Alba (Barcelona) is shown the yellow card.
Alfred Finnbogason (Real Sociedad) is shown the yellow card for a bad foul.
Jordi Alba (Barcelona) wins a free kick in the defensive half.
Foul by Alfred Finnbogason (Real Sociedad).