Lille, champions in 2011, beat Ajaccio 2-0 at home to clinch their first league victory since their opening game, while substitute Gaetan Courtet scored two late goals as promoted Stade de Reims won 3-1 against Nice.
Former European Cup finalists Reims are fourth in Ligue 1 on 14 points, four behind leaders Olympique Marseille who take on second-placed Paris St Germain on Sunday.
Evian's Khlifa scored his third when he fired past goalkeeper Geoffrey Jourdren with one minute to go to upset Montpellier, who are still to win at home in Ligue 1 this season and lie 15th with eight points from eight games.
Evian are now 17th, but level on points with Montpellier who can consider themselves unlucky after they twice hit the bar.
"It is distressing to concede three goals at home like this. When you are neither serious nor rigorous, you pay for it," Montpellier coach Rene Girard told a news conference.
"If some of the boys have felt like they were world champions, they have been given a dose of reality... We have to keep our feet on the ground.
"We cannot be satisfied, only disappointed and angry."
Tunisia's Khlifa put the visitors ahead in the 30th minute when he ran on to a Yannick Sagbo pass and finished between the keeper's legs after Montpellier had given the ball away.
Marco Estrada equalised on 36 minutes with a curling free kick from 35 metres before Montpellier took the lead six minutes later when Souleymane Camara headed home a cross from Karim Ait-Fana.
Younes Belhanda hit the bar with a free-kick as the defending champions pushed hard to double their lead after the break.
Evian, however, levelled when Khlifa curled the ball into the net from just inside the box.
Montpellier then saw a flurry of chances go begging as Jonathan Mensah blocked a Daniel Congre header on the goal line and substitute Gaetan Charbonnier volleyed against the woodwork, before Khlifa stunned the home side with the late winner.
Lille took the lead against Ajaccio when Nolan Roux headed home a Mathieu Debuchy cross in the 42nd minute before Ryan Mendes scored his first Ligue 1 goal 11 minutes into the second half to seal a first home league win of the season.
Toifilou Maoulida also scored late to earn promoted-side Bastia a 3-2 win at home to Troyes who had Fabrice N'Sakala and Thiago Xavier sent off in the second half.
The visitors twice recovered from going a goal down and their goalkeeper Yohan Thuram-Ulien saved an Anthony Modeste penalty, before Maoulida headed the decider three minutes from time.
The result moved Bastia up to 12th on ten points, while Troyes stay bottom with just two points from their opening eight games.
Toulouse recovered from two goals down to draw at home to Valenciennes while Stade Rennes won 1-0 at Sochaux to move up to 11th.
- Stade de Reims