Barcelona boss Luis Enrique made four changes to the team that started against Juventus during the week, with Jordi Alba , Sergio Busquets , Andre Gomes and Paco Alcacer all coming into the XI. Neymar missed out through suspension, however, while a calf problem kept Javier Mascherano on the sidelines.
As for Sociedad, head coach Eusebio Sacristan made just one change from the team that beat Sporting Gijon last time out, and that came in the final third as Mikel Oyarzabal took the place of Juanmi .
Lionel Messi struck twice in the first half to take his tally for the Catalans to 498 goals in all competitions, before an own goal from Samuel Umtiti shortly before the break helped the Basque side back in the game.
Messi then set up Paco Alcacer – who replaced the suspended Neymar – to make it 3-1, with Xabi Prieto quickly responding to make it four goals in the last eight minutes of an enthralling first half.
Sociedad were unable to find a leveller in a much more low-key second half, as Messi’s stellar display made the difference.
Real Madrid’s 3-2 success at Sporting Gijon earlier in the afternoon had moved Zinedine Zidane’s side six points clear at the summit, but Barcelona are back to within three ahead of El Clasico at the Bernabeu next weekend.