Barcelona suffered their biggest La Liga defeat under Luis Enrique as Celta Vigo ended the champions' 100% record in the league this season.
Former Liverpool forward Iago Aspas scored twice after Nolito opened the scoring against his former club.
Neymar pulled one back for Barca with 10 minutes remaining, before ex-Manchester City and Stoke striker John Guidetti netted a fourth for the hosts.
Barcelona had lost only one of their previous 25 matches in La Liga.
Victory took Celta briefly top of the table, but Real Madrid replace them after beating Athletic Bilbao later on Wednesday.
Barca boss Luis Enrique, said: "What decided this game is how well Celta played. It was highly effective football from them. It was very good.
"We tried to create problems, but we suffered a lot in one-on-one situations. When a team has played better than you, then there is nothing much that you can say.
"I'd rather lose to a team that plays like Celta did today, without any tricks, purely winning through their football. I congratulate them and hope they can carry on playing like that."
It was the third time Barca have conceded four goals in just nine games this season having been thrashed 4-0 by Athletic Bilbao in the Spanish Super Cup and beaten Sevilla 5-4 in the Uefa Super Cup.

Lineup, Bookings (4) & Substitutions (5)

Celta de Vigo

  • 01 Álvarez Conde
  • 02 Mallo Novegil Booked
  • 22 Cabral
  • 20 Gómez Sola Booked
  • 19 Castro Otto
  • 14 Orellana
  • 24 Fernández
  • 06 Radoja (Hernández - 76' )
  • 10 Agudo Durán
  • 18 Wass (Planas - 85' )
  • 09 Iago Aspas (Guidetti - 78' )

Substitutes

  • 03 Fontás
  • 07 Bongonda
  • 08 Hernández
  • 11 Guidetti
  • 17 Madinda
  • 21 Planas
  • 26 Díaz García

Barcelona

  • 01 ter Stegen
  • 06 Dani Alves
  • 03 Piqué
  • 14 Mascherano
  • 24 Mathieu
  • 20 Sergi (El Haddadi - 58' )
  • 05 Busquets Booked (Rakitic - 66' )
  • 08 Iniesta
  • 10 Messi
  • 09 Suárez
  • 11 Neymar Booked

Substitutes

  • 02 Pereira dos Santos
  • 04 Rakitic
  • 15 Bartra
  • 17 El Haddadi
  • 21 Adriano
  • 25 Masip
  • 28 Gumbau
Ref: Alberto Undiano Mallenco
Att: 23,311

Match Stats

Possession56%44%90minsCelta de VigoBarcelona

Shots

18 18

On target

5 7

Corners

5 10

Fouls

19 4

Live Text Commentary

Full time
Full Time Match ends, Celta de Vigo 4, Barcelona 1.
90:00 +2:00 Full time
Full Time Second Half ends, Celta de Vigo 4, Barcelona 1.
90:00 +0:39 Attempt missed. Lionel Messi (Barcelona) left footed shot from outside the box is just a bit too high from a direct free kick.
89:52 Booking
Booking Sergi Gómez (Celta de Vigo) is shown the yellow card for a bad foul.
89:46 Munir El Haddadi (Barcelona) wins a free kick in the attacking half.
89:46 Foul by Sergi Gómez (Celta de Vigo).
88:45 Booking
Booking Neymar (Barcelona) is shown the yellow card.
88:41 Attempt missed. Nolito (Celta de Vigo) right footed shot from outside the box is too high. Assisted by Carles Planas.
87:49 Attempt saved. Lionel Messi (Barcelona) right footed shot from the centre of the box is saved in the bottom right corner. Assisted by Neymar.
87:27 Neymar (Barcelona) wins a free kick on the left wing.
87:27 Foul by Fabián Orellana (Celta de Vigo).
86:49 Offside, Celta de Vigo. John Guidetti tries a through ball, but Nolito is caught offside.
84:26 Substitution
Substitution Substitution, Celta de Vigo. Carles Planas replaces Daniel Wass.
82:06 Goal scored
Goal! Goal! Celta de Vigo 4, Barcelona 1. John Guidetti (Celta de Vigo) right footed shot from the centre of the box to the centre of the goal. Assisted by Hugo Mallo with a cross.
80:54 Attempt missed. Munir El Haddadi (Barcelona) left footed shot from the centre of the box is close, but misses to the right. Assisted by Lionel Messi with a through ball.
79:36 Goal scored
Goal! Goal! Celta de Vigo 3, Barcelona 1. Neymar (Barcelona) right footed shot from the right side of the box to the bottom left corner. Assisted by Lionel Messi with a through ball.
79:24 Ivan Rakitic (Barcelona) wins a free kick in the attacking half.
79:24 Foul by Augusto Fernández (Celta de Vigo).
79:02 Offside, Celta de Vigo. Fabián Orellana tries a through ball, but John Guidetti is caught offside.
78:35 Foul by Jeremy Mathieu (Barcelona).