Both sides had opportunities to win an entertaining encounter at Stade Gerland but at the final whistle it will have been the French side who were the more aggrieved, with the visitors indebted to two superb Kenneth Vermeer saves late on.
The result means the sides remain separated by three points heading into the final round of fixtures, with second-placed Ajax needing to avoid defeat at home to Group D winners Real Madrid on matchday six to be sure of progressing.
Lyon can still go through if Ajax lose against Madrid and they beat group minnows Dinamo Zagreb by a hatful.
The opening half began with Ajax skipper Jan Vertonghen heading over from a corner on five minutes.
Lyon's Lisandro Lopez brought a good parry from Vermeer before Anthony Reveillere's deflected effort went straight into the clutches of the Ajax goalkeeper on 23 minutes.
Moments later Lisandro looked to have played in Bafetimbi Gomis but the ball ran away from the France striker and the chance was gone.
The best moment of the half arrived on 33 minutes when Jimmy Briand allowed Michel Bastos' pass to run across his body before unleashing a low drive from 25 yards that just went wide.
Lyon committed men forward at the start of the second period but gaps were appearing at the back and Ajax almost profited on 50 minutes.
Christian Eriksen had the freedom of the park to run on goal before laying off for Miralem Sulejmani, whose toe-poke was on target but Hugo Lloris saved with his knee.
Ajax were unlucky not to go ahead on 59 minutes when Sulejmani's low shot took a huge deflection off Aly Cissokho and span over Lloris, but there was just enough momentum to take the ball over the crossbar.
Lyon looked listless in attack and Bastos sought to remedy that on 70 minutes with a shot from the left channel that Vermeer spilled before the Ajax defence mopped up.
Ederson entered the fray for Lisandro on 73 minutes and the Lyon substitute was quickly into the thick of the action, coming close with two chances as the hosts began to show a little more urgency.
Ederson also provided the spark moments later when his run and lay off resulted in Bastos firing in a brilliant curling effort from the left channel which brought a flying one-handed save from Vermeer.
Lyon had a shout for a penalty in the final minute when Ederson went down under a challenge in the area but the referee waved play on, and when the ball broke on the edge of the box Yoann Gourcuff fired in a shot that went agonisingly wide.
The hosts last chance came and went as 90 minutes ticked over when Alexandre Lacazette charged in from the right and fired a shot that looked destined for the top-right corner until Vermeer intervened with another great stop.