Lyon took advantage of mistakes from Paris St-Germain goalkeeper Barbora Votikova to win the first leg of their Women's Champions League semi-final.
PSG went ahead through Marie-Antoinette Katoto's early goal, but Lyon equalised with Wendie Renard's penalty after Votikova had fouled Melvine Malard.
Catarina Macario then scored twice with both goals coming from Votikova errors.
But PSG pulled a goal back through Paulina Dudek's penalty. The second leg will be played in Paris on Saturday.
Lyon have won this tournament a record seven times and will go to the Parc des Princes with a one-goal advantage after winning in front of a crowd of 22,774 at the Groupama Stadium.
However, they had to come from behind to do so as they fell behind after only six minutes. The hosts failed to clear near the touchline and that enabled Sara Dabritz to pass to Katoto and she showed her pace to sprint clear of Renard and shoot past Christiane Endler.
But Lyon were only behind for 17 minutes. Delphine Cascarino passed to Malard and her shot was only parried by Votikova before the Czech Republic international fouled Malard to concede the penalty, which Renard converted on a day when she made her 100th appearance in the competition.
Lyon were gifted a second in the 33rd minute as Votikova's clearance fell straight to Ada Hegerberg and she released Macario to score her first.
Her second and Lyon's third goal came in farcical circumstances early in the second half. Dudek passed the ball back to Votikova but the goalkeeper miscontrolled the ball, with it rolling towards her own goal before she lost possession to Macario, who had the simple task of scoring from close range.
PSG have never won this tournament, but were awarded a penalty after Malard was judged to have handled and Dudek scored to give them hope ahead of the second leg.
The winners of this semi-final are likely to face reigning champions Barcelona, who beat Wolfsburg 5-1 in the first leg at the Nou Camp, in front of a world record crowd of 91,648 on Friday.
The final will be held at Juventus' Allianz Stadium on 21 May.