Ajax claimed a superior 4-1 lead over Lyon in the first leg of the 2017 Europa League semi-final at the Amsterdam ArenA on Wednesday.
Goals from Isidore Traore and Kasper Dolberg grabbed a solid first-half advantage for the Dutch masters, and Amin Younes' strike four minutes after the restart strangled the visitors.
Mathieu Valbuena's finish gave the French team hope midway through the second half, but a second goal from Traore restored the three-goal cushion in a thrilling encounter.
Ajax manager Peter Bosz reshuffled his defence from the quarter-finals after the suspensions of Joel Veltman and Nick Viergever, as Kenny Tete and Jairo Riedewald were drafted in for the Netherlands side.
Lyon boss Bruno Genesio made one switch from their last-eight match, with Nabil Fekir deputising for striker Alexandre Lacazette—who was only fit enough to take a spot on the bench.
The Ligue 1 outfit dominated the opening moments of the match, but the hosts were soon in their flow as they pushed forward.
Ajax's sharpness was clear and present, and they took the lead through Traore's deft finish.
Squawka Football hailed the goalscorer:
The advantage was doubled just nine minutes later as Bosz's men displayed a thirst for a convincing win.
Ajax took advantage of a poor clearance, allowing Dolberg to produce a clinical finish from the top echelon.
Lyon were clearly shellshocked, and the decision to leave Lacazette on the bench seemed to have neutralised their attack.
WhoScored.com provided the vital stats on the half-time whistle:
The hosts made it 3-0 after 49 minutes with Younes marginally scrambling his shot across the line, to the delight and rapture of the home supporters.
The tie appeared to be slipping away from the French side, but Lyon were offered a lifeline after Valbuena found the back of the net 24 minutes from time.
The France international guided a perfect finish into the top corner as the game became a much more even affair.
After a period of reflection, the feel-good factor was reinstalled by Traore, who smashed his effort home after 71 minutes.
The attacker finished emphatically, prompting the arrival of Lacazette for the latter stages.
The flow of the game ebbed back and forth in the last 10 minutes with both teams on the front foot in a wild finish to proceedings.
Lacazette was unable to drive his usual influence during his brief cameo, and Lyon will be hoping he is fully fit for the second leg in France.
Ajax were clinical on the night, and Lyon were a rabbit in the headlights as they surrendered to a surprise scoreline.