Jordi Alba's late strike has denied Celtic a point from their Champions League trip to the Nou Camp.
Giorgos Samaras stunned the hosts in the 17th minute by giving Celtic the lead.
The Greek striker got his head to Charlie Mulgrew's free kick, but the ball ricocheted off Javier Mascherano before going into the net.
Barcelona poured forward in search of an equaliser as Neil Lennon's men camped in their own half.
The hosts' patience was finally rewarded when Andres Iniesta combined with Lionel Messi and Xavi before sliding the ball past Fraser Forster.
It did not go all Barca's way in the second half, as Celtic had chances that fell to Victor Wanyama and Mikael Lustig.
Forster saved brilliantly from Messi's header, before David Villa hit the post, and that looked to have recorded a famous point in Catalonia.
However, Tito Vilanova's charges laid siege to Celtic's goal in the closing stages and Alba finally broke their resistance in injury time.