Real Madrid took advantage of Barca's defeat to move a point clear of the Catalans at the top of the table thanks to Karim Benzema's double in a 2-1 win at Athletic Bilbao yesterday.
Celta sit second, behind Madrid only on goal difference, after comprehensively inflicting Barca's first league defeat since February.
Barcelona slip to fifth as Villarreal's 1-0 win at Malaga also gives them a share of the lead in third.
Former Barca forward Nolito put Celta in front before Liverpool reject Iago Aspas struck twice on the counter-attack.
Also Read
It is 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.
"We can only congratulate Celta," said coach Luis Enrique, who left Vigo to take over at the Camp Nou last year.
"They played a very complete game, created chances and won all the one-on-one situations. The level of their football and effectiveness in front of goal was very good."
Things got worse for Barca just four minutes later when an error from Gerard Pique allowed Nolito to play in Aspas, who remained calm before expertly clipping the ball over the helpless Marc-Andre ter Stegen.
The hosts had to withstand a brief Barca onslaught at the start of the second-half as Lionel Messi struck the post from Andres Iniesta's cut-back.