Evian, who beat Paris St Germain in the previous round, will take on either Troyes or Girondins Bordeaux in the May 31 final showdown at the Stade de France.
The Troyes v Bordeaux game was postponed by a week due to the risk of flooding in the Aube region and will now take place next Tuesday.
"I have the feeling that tonight we've had the luck that we did not have during the season," coach Pascal Dupraz told French TV channel France 2, referring to his team's dismal run in Ligue 1.
"Maybe it's the magic of the Cup."
At Annecy's Parc des Sports, where Evian play their home games, Lorient floundered in the first half.
Midfielder Milos Ninkovic opened the scoring after 10 minutes with a low shot after being set up by a Yannick Sagbo backheel.
Sagbo then found the back of the net 10 minutes later, latching on to a corner kick at the far post.
Lorient were toothless up front and shaky at the back while Evian, who are 18th in Ligue 1 and are battling to avoid relegation, showed courage and enthusiasm.
In the 33rd minute, Benjamin Lecomte let a routine pass slip from his hands for Kevin Berigaud to grab the ball and push it into the empty net.
Evian coach Dupraz made a couple of defensive changes 10 minutes into the second half, yet his team continued to attack and Najib Baouia added the fourth, volleying from Eric Tie Bi's cross from the left.