Alan Thompson smashed home a close range goal to give Celtic a first leg lead over Barcelona in a Uefa Cup tie that saw three players sent off.
Both sides gave their all in an absorbing tie
Celtic keeper Robert Douglas and Barca midfielder Thiago Motta saw red after a melee in the tunnel at half time.
Early in the second half Javier Saviola was dismissed for kicking Thompson, who struck the vital goal soon after.
The visitors missed two good chances in the first half and paid the price as Celtic held on for a famous win.
The Spanish team looked the more comfortable team in the opening minutes and Bobo Balde had to block a shot from Motta after a neat cut-back from Ronaldinho.
But Celtic soon started snapping into tackles and managed to unsettle the Barcelona rhythm.
Stephen Pearson was looking lively on the left flank and the youngster sent a powerful strike fizzing wide of the visitors' post.
Some sloppy defending allowed the Catalan club to manoeuvre Saviola in front of goal but the little Argentine screwed his shot horribly wide from close to the penalty shot.
Balde made a number of impressive tackles at the back but joined the attack in the 34th minute when he linked with Larsson to send in an awkward low shot that Victor Valdes did well to hold.
Minutes later, Celtic were exposed at the back again when Ronaldinho raced clear but his clipped shot missed the target.
Larsson caused Barcelona a number of problems
The Brazilian ace then danced past Balde before threading a dangerous ball across goal and Jackie McNamara had to make a wonderful sliding challenge to prevent Javier Luis Garcia knocking it in from close range.
Thompson burst into the Barca penalty area just before the interval and latched onto a Petrov pass only for his his low shot to be impressively stopped by the outstretched hand of Valdes.
As the teams left the park at half time there was a scuffle involving a number of players.
Punches appeared to be thrown in the tunnel and Douglas and Motta were shown red cards in the dressing room.
Teenager David Marshall took the place of Douglas in the home goal with striker Craig Beattie making way.
Celtic were caught cold when Saviola sent an angled shot inches wide of the post before Marshall had touched the ball.
Saviola then became the third player to see red when he hacked Thompson down after being dispossessed.
And, 10 minutes later, Thompson latched on to a perfect headed knock down from Larsson to lash the ball into the net from six yards.
With the visitors reduced to nine men, Celtic were able to hold on to the ball for long spells, while probing for openings.
In the 75th minute Larsson went close to extending the home side's lead when his low angled shot shaved the post.
Both sets of players were wilting in the closing stages and Celtic appeared more intent on not losing a goal than on adding to their tally as the game fizzled out.
Celtic: Douglas, Varga, Balde, McNamara, Agathe, Lennon, Petrov, Pearson, Thompson (Sylla 83), Larsson, Beattie (Marshall 45).
Subs Not Used: Lambert, Wallace, Smith, Kennedy.
Booked: Varga, Balde.
Sent Off: Douglas.
Barcelona: Valdes, Reiziger (Gerard 64), Puyol, Oleguer, Gabri, Cocu, Xavi, Motta, Ronaldinho (Overmars 88), Luis Garcia (Quaresma 72), Saviola.
Subs Not Used: Rustu, Marquez, Iniesta, Oscar Lopez.
Sent Off: Motta, Saviola (49). Booked: Reiziger.
Referee: Wolfgang Stark (Germany).