Grenoble took a massive step towards safety with a 32-11 win over Toulouse, ending a run of four straight losses.
Nigel Hunt scored the home side's only try as they powered to a 16-3 half-time lead, and despite Florian Fritz crossing in the second half, Grenoble were never in danger, even finishing in style with a late try from Daniel Kilioni.
They are now all but sure of staying up ahead of their final game against relegated Lyon next week.
Having lost four games in a row, including three straight at home, Grenoble had slipped out of the play-off race and found themselves desperately in need of a win to ward off the threat of relegation.
Toulouse knew that a sixth consecutive win would take them into the top two, at least temporarily, with Clermont and Toulon meeting on Sunday.
Grenoble had the better of the opening stages, and took the lead with a Jonathan Wisniewski penalty after Corey Flynn failed to roll away at a ruck.
Defence has been Grenoble's biggest problem this season, with no team conceding more tries, but they were clearly up for it with some ferocious tackling early on.
They could have stretched their lead to six points but Wisniewski's penalty came back off the post.
However the aggressive defence from the home side paid off after 12 minutes when Toulouse were forced backwards before a loose pass allowed Hunt to pounce on a loose ball and sprint over, with Wisniewski converting to make it 10-0.
It was all Grenoble in the first half, and after a powerful rolling maul they earned another penalty which Wisniewski converted before three more from a scrum made it 16-0.
Toulouse finally woke up right on the stroke of half-time with a break from Maxime Médard, but he couldn't feed Yoann Huget outside him. Grenoble were offside as they scrambled back allowing Toby Flood to get the visitors on the board with a penalty.
Grenoble started the second half as they had the first however, with another Wisniewski penalty to push the lead back to 16.
The visitors neded a reaction, and when Yannick Nyanga burst through in midfield they thought they had their first try from Médard. The full-back went over in the corner but was ruled out for a marginal knock-on by Fritz.
Still, Grenoble had been caught offside in the build-up and Flood knocked over three more points for Toulouse, though they were still trailing by 19-6.
The problem for Toulouse that was despite occasionally looking threatening, they were conceding too many penalties, and after another scrum infringement, Wisniewski added his fifth penalty of the afternoon.
While they were struggling to find a way through, Toulouse were much better in the second half, with Grenoble appearing a little short of gas.
A succession of cynical penalties from the home side led to Fabien Alexandre being sin-binned just after the hour. However Grenoble weren't about to buckle and flew up in defence to force the turnover and keep their line unbreached.
Finally Toulouse did find a way through, after a huge run from Huget they spread the ball wide, with Fritz going over in the right corner, although Flood was off-target with the touchline conversion.
Toulouse were still in with a chance of losing bonus point but Wisniewski put paid to those hopes with yet another penalty, with the visitors clearly frustrated by the decisions of referee Mathieu Raynal.
And it was Grenoble who had the final say, with Kilioni taking advantage of a mix-up between Vincent Clerc and Sébastien Bézy in the in-goal area to collect the ball and dot down. Wisniewski converted to seal the win for his side.
Tries: Hunt, Kilioni
Cons: Wisniewski 2
Pens: Wisniewski 6
Yellow Card: Alexandre
Pens: Flood 2
Grenoble: 15 Fabien Gengenbacher, 14 Daniel Kilioni, 13 Chris Farrell, 12 Nigel Hunt, 11 Gio Aplon, 10 Jonathan Wisniewski, 9 Charl Mcleod, 8 Florian Faure, 7 Fabien Alexandre, 6 Rory Grice, 5 Hendrik Roodt, 4 Benjamin Hand, 3 Dayna Edwards, 2 Laurent Bouchet, 1 Albertus Buckle.
Replacements: 16 Loick Jammes, 17 Fabien Barcella, 18 Ross Skeate, 19 Jonathan Best, 20 Joannes Henry, 21 Geoffroy Messina, 22 Benjamin Thiery, 23 Richard Choirat
Toulouse: 15 Maxime Médard, 14 Vincent Clerc, 13 Yann David, 12 Florian Fritz, 11 Yoann Huget, 10 Toby Flood, 9 Sébastien Bézy, 8 Louis Picamoles, 7 Yannick Nyanga, 6 Thierry Dusautoir, 5 Yoann Maestri, 4 Joe Tekori, 3 Neemia Tialata, 2 Corey Flynn, 1 Gurthrö Steenkamp
Replacements: 16 Julien Marchand, 17 Cyril Baille, 18 Census Johnston, 19 Edwin Maka, 20 Imanol Harinordoquy, 21 Luke McAlister, 22 Gillian Galan, 23 Timoci Matanavou
Referee: Mathieu Raynal