The Dutch side led when on-loan Chelsea striker Bertrand Traore glanced in a header, before Kasper Dolberg drove in a second after defensive confusion.
In an open affair, Amin Younes struck a third via a deflection after the break.
Mathieu Valbuena gave Lyon hope by curling in an away goal, but Traore added his second to give Ajax control.
Traore’s finish from Hakim Ziyech’s cross made the attacking midfielder the first player in Europa League history to assist three goals in a semi-final or final.
He was central to much of Ajax’s good work in a match which was far from a cagey first-leg affair, with the sides sharing 37 shots in all.
Lyon, who have never played in a major European final, will now need to overturn a three-goal deficit in the second leg on 11 May if they are to face either Manchester United or Celta Vigo in the final in Stockholm 13 days later.
The French side were undone by an inswinging free-kick as Traore headed in the opener but their manager, Bruno Genesio, was visibly incensed by the defending for the hosts’ second.
Goalkeeper Anthony Lopes lofted a poor clearance which was headed into the path of Dolberg, who raced through to finish with the outside of his foot.
Lopes brilliantly denied Younes when one-on-one before the break but could do little when the German’s low drive deflected past him and just crossed the line on 49 minutes.
The crowd inside the Amsterdam Arena grew boisterous as their side closed in on a first European final since defeat in the European Cup to Juventus in 1996.
Valbuena’s calm finish from 18 yards briefly halted the celebrations, only for Traore to restore the three-goal lead.