After two early goals and a poor first half, Lyon dominated in the second period but could not find enough goals to turn the game around.
Kevin Berigaud gave the hosts the lead after just eight minutes, racing on to a ball over the top and finishing well.
Lyon then missed a couple of half chances before going two behind. Berigaud was again the scorer, this time capitalising on poor defending to fire home Daniel Wass's cross.
The visitors improved after the break and got themselves on the scoresheet within five minutes, thanks to Jordan Ferri's excellent long-range strike.
They continued to push for an equaliser with Yassine Benzia and Ferri providing Evian with a constant threat, but were unable to find it and lost for the second time this season.