Manchester United marked Sir Alex Ferguson's 1,000th match in charge at Old Trafford by qualifying for the Champions League knockout phase.
Gary Neville's rare goal from eight yards after good work by Alan Smith put United ahead after 18 minutes.
But goalkeeper Roy Carroll gifted Lyon an equaliser six minutes before the interval when he fumbled Mahamadou Diarra's speculative 30-yard shot.
Ruud van Nistelrooy's close-range header after 55 minutes sealed the win.
It was an open game in which United created the better opportunities, with Wayne Rooney and Van Nistelrooy both hitting the woodwork.
United chief executive David Gill made a presentation to Ferguson before kick-off, with the United boss receiving a standing ovation from an appreciative Old Trafford.
Rooney almost gave Ferguson the perfect reason for further celebration after 11 minutes when he found space on the edge of the area, but his low drive struck the post.
But Ferguson did not have to wait long for the opener - and it was one of his old faithfuls who was on the mark in the 18th minute.
Ruud van Nistelrooy scored the decisive goal for United
Neville fed Smith on the right, and when Lyon failed to deal with his dangerous cross, the veteran defender followed up to score from close range.
Rooney was twice off target as United attempted to press home their advantage, but it was Lyon who levelled with a gift from Carroll six minutes before the interval.
Diarra's shot from fully 30 yards posed no serious threat, but Carroll somehow allowed the ball to squirm through his fingers into the net.
United were forced to make a change at the interval, with Neville going off suffering from a virus.
He was replaced by Wes Brown, who almost made a spectacular entrance, firing inches wide of the far post with an angled drive.
United were back in front after 52 minutes, courtesy of Old Trafford's Champions League talisman Van Nistelrooy.
Ferdinand was the creator, crossing to the far post for Van Nistelrooy to score from close range.
It maintained Van Nistelrooy's remarkable Champions League record. He has now scored 34 goals in 35 matches.
Van Nistelrooy almost added a picture goal three minutes later, cushioning a glorious lob against an upright for Rooney's perfect pass.
Man Utd: Carroll, Gary Neville (Brown 45), Ferdinand, Silvestre, Heinze, Smith, Keane (Fortune 90), Scholes, Ronaldo, Rooney, van Nistelrooy (Fletcher 71).
Subs Not Used: Howard, Bellion, Djemba-Djemba, O'Shea.
Goals: Gary Neville 19, Van Nistelrooy 53.
Lyon: Puydebois, Reveillere, Diatta, Cris, Berthold, Diarra, Essien, Juninho, Govou (Wiltord 60), Frau (Bergougnoux 72), Nilmar (Malouda 72).
Subs Not Used: Jaccard, Clement, Gomez, Hima.
Goals: Diarra 40.
Ref: Kim Nielsen (Denmark).