Barcelona all but ensured qualification from Group E of the Champions League with a clinical disposal of Rangers.
Thierry Henry opened the scoring for Barcelona after seven minutes
Thierry Henry opened the scoring after seven minutes, forcing the ball over the line with his arm after a Lionel Messi header came out off the post.
But Barca were worthy of their second goal, Messi pouncing after goalkeeper Allan McGregor had parried an effort from Ronaldinho after 43 minutes.
Nacho Novo and Jean-Claude Darcheville threatened late on for Rangers.
But the Glasgow side now face a battle with Lyon for second place in the group, although Stuttgart's defeat in France means the Scots are guaranteed a place in the Uefa Cup at the very least.
Daniel Cousin had been chosen ahead of Kris Boyd and the fit-again Darcheville as Rangers manager Walter Smith reverted to the single striker formation he favours in Europe.
Brahim Hemdani continued in place of the suspended Kevin Thomson, while Charlie Adam bolstered the midfield by taking the place of Nacho Novo.
Rafael Marquez failed a late fitness test, so Lilian Thuram retained his place in Barca's defence.
But Gabriel Milito came into the Barcelona side that beat Real Betis at the weekend in place of the injured Gianluca Zambrotta.
The Spanish side continued to be without top names Samuel Eto'o, Deco and Edmilson but were determined to avenge a 0-0 draw in Glasgow that hurt them almost as much as a defeat.
And their early domination of possession led to the breakthrough, Ronaldhino providing the killer pass by finding Messi lurking unmarked behind Rangers left-back Sasa Papac.
The Argentine headed the ball across the face of McGregor and off the far post before it was bundled over the line by Henry's forearm out of sight from the referee.
Lionel Messi combined with Ronaldhino for the second goal
But Rangers settled and began to produce some passing movements of their own.
And DaMarcus Beasley broke into the box but could only direct a header wide from 16 yards.
Barca remained the more dangerous and an Andres Iniesta drive flew just wide from 25 yards, while McGregor superbly tipped over a Ronaldinho effort from the edge of the box.
Henry squandered a chance, firing straight at McGregor from 16 yards, but started the move that led to the second goal.
Ronaldhino played a one-two on the edge of the box and, when McGregor blocked the Brazilian's shot, Messi fired home on the rebound.
Barca continued to take the game to Rangers after the break and McGregor's feet denied Messi after the forward had shot low after slipping the ball through David Weir's legs.
Darcheville replaced Adam after 62 minutes as Smith went for broke, while Novo was introduced soon after, taking the place of Beasley.
But the tide continued to flow towards the Rangers goal, with Xavi firing wide from 20 yards and Messi sidefooting wide after a delightful Henry pass.
Darcheville forced the first save out of Victor Valdes after 82 minutes, but the striker's powerful free-kick from 25 yards was straight down the goalkeeper's throat.
Novo forced a fine stop from Valdes with a superb last-gasp volley as Rangers suffered their first defeat of the Champions League campaign.
Barcelona: Valdes, Puyol (Oleguer 85), Thuram, Milito, Abidal, Xavi, Toure Yaya, Iniesta (Gudjohnsen 70), Messi, Henry, Ronaldinho (Bojan 77).
Subs Not Used: Jorquera, Sylvinho, Giovanni, Marquez.
Goals: Henry 7, Messi 43.
Rangers: McGregor, Hutton, Cuellar, Weir, Papac, Hemdani, Beasley (Novo 69), Ferguson, Adam (Darcheville 62), McCulloch, Cousin (Naismith 78).
Subs Not Used: Carroll, Boyd, Whittaker, Faye.
Ref: Eric Braamhaar (Netherlands)