Atletico Madrid moved level on points with La Liga leaders Real Sociedad after beating Barcelona, who are now nine points adrift of the top two.
Barcelona also lost defender Gerard Pique to injury to cap a bad night.
Pique looked visibly upset as he hobbled off in the second half.
Barcelona confirmed after the game that Pique had sprained his right knee and are “waiting for more tests to ascertain the extent of the injury”.
There is no timescale on how long Pique could be out for but reports in Spain suggest he could be sidelined for up to six months.
Barcelona rarely looked like rescuing a point from the game, with Jan Oblak’s save from a Clement Lenglet header the closest the visitors game.
The result leaves Barcelona 10th in La Liga. They have 11 points from eight games, nine behind Sociedad, who are only ahead of Atletico on goals scored, both having the same goal difference, although Atletico have a game in hand.
This win continued Atletico’s unbeaten start to the season and stretched their unbeaten run to 24 games in all competitions, while it was Barca’s third defeat in eight La Liga games.
Lionel Messi was unusually subdued, although the forward had only returned from a long trip to South America on Thursday after international duty with Argentina.
‘It was our turn to win’ – what they said
Atletico Madrid boss Diego Simeone: “It was our turn to win today but it won’t change our objectives.
“We knew exactly how we needed to play and that we would have to work as hard in attack as in defence.”
Barcelona boss Ronald Koeman: “A team like Barca cannot afford to concede a goal like that.
“It was our fault, it’s not good and we can’t let something like that happen again.”