Late strikes from striker Samuel Eto'o and substitute defender Juliano Belletti [ Images ] cancelled out a first-half header from Arsenal defender Sol Campbell.
Arsenal became the first side ever to have a player sent off in a final when German keeper Jens Lehmann was dismissed after he caught Eto'o on the fringe of the area after the Barca striker had been put through by Ronaldinho [ Images ] in the 18th minute.
The German caught Barca striker Samuel Eto'o with his feet just outside the area as he raced towards goal. The Cameroon international stumbled but managed to stay upright and fed the ball to Ludovic Giuly, who drilled the ball into the net.
But Norwegian referee Terje Hauge, who sent off Chelsea [ Images ] full back Asier del Horno when the Londoners played Barcelona earlier in the competition, pulled play back, sent off Lehmann and awarded a free-kick to the Spanish champions outside the area.
Arsenal manager Arsene Wenger [ Images ] took off French midfielder Robert Pires [ Images ] in his final match for the north London [ Images ] club and replaced him with Spanish goalkeeper Manuel Almunia [ Images ].
But the Londoners, who had dominated the opening exchanges, refused to fold and were rewarded when Campbell out-jumped the Barca defence to thump a header inside the far post eight minutes before the break.
Arsenal looked to be on course for victory until Eto'o equalised after racing on to a neat flick from substitute Henrik Larsson [ Images ] 14 minutes from time.
Brazilian Belletti grabbed the winner soon after when he battered a shot under keeper Manuel Alumnia.