Neymar wasted a couple of openings to put the hosts ahead early on, failing to control Luis Suarez's pass into the box before heading straight into the hands of man-of-the-match Sergio Alvarez from close range minutes later.
The Brazilian forward was involved again shortly after when his curling effort from range came back off the crossbar, as Barca continued to probe for an opening goal.
© Getty Images
Lionel Messi, closing in on becoming La Liga's record goalscorer, was denied by Alvarez after being picked out by Neymar, shortly before driving into the Celta box and striking the crossbar with a deflected effort.
Barcelona saw two more chances come and go before the interval, with Messi heading over a decent Suarez cross into the box, while the former Liverpool man could not get the better of Alvarez at the end of his run.
Luis Enrique, who was managing Celta Vigo this time last year, sent his side out fired up, and it almost paid dividends when Neymar struck the crossbar shortly after the restart.
The pacesetters created a number of opportunities in the remainder of the game, but could not convert.
Suarez could not quite divert Messi's free kick into the back of the net, while Alvarez kept out Messi and Suarez once more in impressive fashion.
Substitute Charles could have put the game beyond the hosts, only to head his close-range effort over the crossbar 10 minutes from time.
Messi was to strike the bar yet again - the fourth occasion that the Catalan giants had been denied by the frame of the goal - which signalled the end of Barcelona's hopes of salvaging a point.
The defeat sees them drop to third in the La Liga table, while Celta tighten their hold on a Europa League place.