Real Madrid moved three points clear at the top of La Liga as Barcelona suffered their second league defeat in four games with a 3-1 reverse away to Real Sociedad on Saturday.
Earlier, Madrid had comfortably seen off Elche 3-0 at the Santiago Bernabeu thanks in part to a spectacular long-range strike from Gareth Bale.
Barcelona had come into the game on a high after beating Manchester City in their much-anticipated Champions League tie on Tuesday, but went behind when Alex Song turned Sergio Canales' cross into his own net.
Lionel Messi restored parity almost instantly with a clinical left-footed finish.
However, two goals in the opening 15 minutes of the second-half from Antoine Griezmann and David Zurutuza handed Sociedad a deserved victory.
Victory moves Sociedad to within a point of Athletic Bilbao in the fourth Champions League place, while Barca could end the weekend in third should Atletico Madrid avoid defeat away to Osasuna on Sunday.
There were no such worries for Real Madrid as goals from Asier Illarramendi and Isco either side of Bale's stunner handed them a 15th win in 16 games in all competitions.
Madrid were once again without the suspended Cristiano Ronaldo as he completed a three-game ban after having a final appeal rejected on Saturday morning.