Benjamin Moukandjo bagged a brace as Nancy claimed their first Ligue 1 win in six matches and ended St Etienne's slim hopes of finishing fourth.
Cameroon striker Moukandjo put the hosts two goals to the good inside 21 minutes but Pierre-Emerick Aubameyang narrowed the deficit seven minutes before the interval.
Yohan Mollo extended Nancy's lead in the 42nd minute and although Laurent Batlles scored to once again narrow the deficit to just one goal, Les Chardons held on.
In fact, it was Nancy who came closest to adding a fourth but Andre Luiz fired over the crossbar from the penalty spot after Moukandjo was fouled by Sylvain Marchal in the area.
St Etienne are now six points behind fourth-placed Lyon going into the final round of fixtures next week.
They needed to win today as well as a turnaround in goal difference and results to go their way but they got off to a dreadful start at the Stade Marcel Picot.
Moukandjo tapped into an empty net in the fifth minute after a loose pass from a St Etienne defender left goalkeeper Stephane Ruffier stranded.
And Nancy took a two-goal advantage in the 21st minute when Bakaye Traore broke down the left, beating two defenders in the process, before finding Moukandjo, who made no mistake with his right-footed finish.
St Etienne refused to give up and Max Gradel fired a vicious cross in from the left which Guy N'dy Assembe pushed into the path of Aubameyang, whose effort comes back off the post.
The St Etienne forward made no mistake soon after, however, narrowing the deficit in the 38th minute when Loic Perrin's cross from the left was headed back across goal by Joshua Guilavogui to Aubameyang for a straightforward tap in.
But Joshua Guilavogui gave up possession in his own half and although Mollo's shot looked like it would be easily saved, Ruffier's error allowed the ball to get beyond him and into the back of the net three minutes before half-time.
St Etienne narrowed the deficit in the 70th minute. Bakary Sako's low left-wing cross was parried to Batlles and he duly converted.
But they nearly conceded a fourth as Marchal brought down Moukandjo in the area but Luiz blazed over.