Iago Aspas inspired the hosts into a 3-0 lead at the break, setting up Pione Sisto’s opener, scoring a fine second and forcing Jeremy Mathieu’s own goal.
Barcelona fought back through Gerard Pique’s header and Neymar’s penalty, only for Marc-Andre ter Stegen’s awful error to hand Celta their fourth goal.
Pique scored a second header late on but Celta held on for a thrilling win.
Without the injured Lionel Messi, Barcelona looked bereft of ideas at times as they failed to take the chance to go top following Real Madrid’s earlier draw with Eibar, instead remaining in fourth.
The hosts appeared to start in survival mode as Barcelona dominated the opening ten minutes only for Celta to end the half threatening to utterly humiliate their opponents.
Former Liverpool striker Aspas was the catalyst, sliding in Sisto with a brilliant first-time ball after Celta pounced on Ter Stegen’s poor attempted pass to Sergio Busquets, with the Danish forward providing an impressive low finish after his first touch took him wide.
Shortly after drawing a fine save from Ter Stegen, Aspas had Celta’s second – controlling a long ball forward before powering away from the back-tracking Pique to calmly slot past the hapless Barcelona keeper on the angle.
Moments later Celta scored their third, Aspas causing panic by running in behind the Barcelona defence and forcing Mathieu to divert Daniel Wass’ perfectly-weighted cross into his own net before Aspas could get there.
After the interval, the hosts were guilty of complacency, remaining static as Pique stole in to score before Pablo Hernandez conceded a penalty with a clumsy foul on Andre Gomes.
But Hernandez made amends in the 77th minute, charging down an indecisive Ter Stegen, whose attempt to loft the ball back to Jordi Alba hit Hernandez in the face and rebounded in for Celta’s bizarre fourth.
No Messi, more problems
Despite having won both previous games this season where Messi was absent, Barcelona clearly missed their talisman as they failed to unpick Celta’s defence for long periods.
Neymar took it on himself to play Messi’s roaming role but often found himself running into traffic, while neither Arda Turn nor Rafinha could provide the attacking thrust lost by Neymar dropping deeper.
Instead it was Pique who offered his side’s most consistent attacking threat, surging forward to head in a cross from substitute Andres Iniesta, making his 600th Barcelona appearance, before also turning in Denis Suarez’s ball from the right.
And while Pique was guilty of backing off Aspas for Celta’s second, Barcelona’s miserable night was summed up by Ter Stegen – at fault for two goals, with his late error ultimately putting the draw beyond his team in a frantic finale.
Make Money Online in Nigeria... Click HERE To Start Now!