Real Madrid stormed three points clear at the top of La Liga after they beat Elche 3-0 on Saturday and Barcelona slumped to a 3-1 defeat at Real Sociedad.
Asier Illarramendi gave Real the lead before the break but it took them until the 72nd minute to score again with a rocket of a long-range drive by Gareth Bale. Isco added a third goal with nine minutes left.
Barca were cut open again and again on the counter-attack by a Sociedad side intent on avenging their recent King's Cup exit at the hands of the Catalans.
Fifth-placed Sociedad went ahead through an Alex Song own goal before Lionel Messi equalised. Antoine Griezmann and David Zurutuza then struck after the break to send Barca to defeat.
It could have been worse for the champions as Carlos Vela hit the woodwork late on.
"We didn't feel comfortable and hold possession which is our strength. This meant that they had openings," Barca defender Gerard Pique told reporters.
"Now we have a break for a week and we can consider what went wrong. We are only three points behind so it isn't worrying."
Barca, who also had coach Gerardo Martino dismissed at halftime for complaining to the referee, have 60 points from 25 matches.