Rangers made it two wins from two Champions League outings with an amazing victory in Lyon.
McCulloch celebrates Rangers' opening goal in France
Lee McCulloch gave the visitors a half time lead with a powerful header from a DaMarcus Beasley corner.
And Rangers stung the hosts with two breakaway goals early in the second half, Daniel Cousin and Beasley applying the finishes.
The French side hit the woodwork three times but Rangers defended stoutly throughout for a valuable three points.
The Ibrox side are now level with Barcelona, who won 2-0 in Stuttgart, at the top of Group E and next face the Catalan giants in Glasgow on 23 October.
Rangers, who had been seeded fourth in a tough section, must now be harbouring serious ambitions of reaching the knockout phase.
Lyon, on top of Ligue 1 despite a shaky start to the season, made a bright opening, zipping one-touch passes around with confidence.
But the Rangers midfielder five worked hard to protect their defenders, constructing a solid wall of blue shirts across the the face of the penalty area.
And the visitors stunned the the home fans in the Stade Gerland when they opened the scoring on 23 minutes.
Alan Hutton broke purposefully from his right-back berth to win a corner and McCulloch rose to bullet home the near post delivery from Beasley.
With Walter Smith's side continuing to defend deep in their own half, a frustrated Lyon side were reduced to long range shots, without troubling goalkeeper Allan McGregor.
Lyon full-back Fabio Grosso did manage to steal in behind the Rangers rearguard but his fizzing low cross was too firm for any of his team-mates to connect with.
A minute before the interval, Juninho won a free-kick, which earned David Weir a yellow card, with a devious dive.
However, justice was done when the Brazilian midfielder's dipping strike from 22 yards cannoned off the crossbar, with the flailing McGregor grasping at thin air.
The second half was just two minutes old when Juninho flashed an angled shot narrowly wide of the target.
Rangers immediately replied with another penetrating run from Hutton and Cousin took a neat touch from the defender's pass before turning his marker and blazing a shot beyond Remy Vercoutre.
The small band of travelling fans were still celebrating the Frenchman's strike when Beasley increased the lead.
With the home defence posted missing, the American winger ran on to a long ball from Cousin and calmly placed it past the dithering Vercoutre.
On 70 minutes, Juninho struck the frame of the goal for a second time with fierce strike from 20 yards.
McGregor made a fine save from a deflected Hatem Ben Arfa effort and a header from Cleber Beraldo crashed off the bar as Lyon pressed for a way back into a game they had been fancied to win comfortably.
Lyon: Vercoutre, Reveillere (Clerc 81), Squillaci, Anderson, Grosso, Juninho, Bodmer (Ben Arfa 60), Kallstrom, Govou, Baros (Keita 60), Benzema. Subs Not Used: Roux, Belhadj, Fabio Santos, Toulalan.
Booked: Squillaci, Reveillere.
Rangers: McGregor, Hutton, Cuellar, Weir, Papac, Hemdani, Beasley (Adam 90), Ferguson, Thomson, McCulloch (Novo 80), Cousin (Whittaker 66). Subs Not Used: Carroll, Boyd, Naismith, Faye.
Booked: Weir, Ferguson, Thomson.
Goals: McCulloch 23, Cousin 48, Beasley 53.
Ref: Tom Ovrebo (Norway).