Toulon moved to the top of the Top 14 as they cruised past Brive 34-11 in the day's final game with David Smith scoring four tries.
Castres kept their hopes of survival alive as they battled past Lyon 23-20 despite being reduced to 14 men after just 20 minutes.
Elsewhere Clermont did enough to see off Bayonne 28-16, while La Rochelle nearly produced the result of the weekend but had to settle for a draw at Montpellier.
Finally Racing-Métro battled their way to victory in a thrilling encounter against Grenoble.
Earlier in the day Jules Plisson's late drop goal saw Stade Français pick up a vital win away at Bordeaux-Bègles.
Castres 23-20 Lyon
Stade Pierre Antoine, Castres
Rory Kockott's last-second penalty gave Castres the most unlikely victory to keep themselves in contention for survival.
After losing Yannick Caballero to a red card after 20 minutes, they fought back from a 14-0 deficit to win the game in the final seconds.
Lyon made the perfect start with an early try from Toby Arnold after they had worked some space out on the right to put the centre over.
Then followed a catastrophic ten-minute period for the home side who found themselves reduced to 13 men. Christophe Samson was first shown a yellow card as he charged into a ruck, with his shoulder catching Jean-Philippe Bonrepaux.
Caballero then saw red after 20 minutes as he collided with Julien Puricelli, with referee Jérôme Garcès deeming he had intentionally kneed the former French international in the back. It seemed incredibly harsh, with Puricelli having moved into his path as he went to support a ruck.
The home side were understandably infuriated, but didn't fall apart in the remainder of the first half, however they weren't able to find a way through despite edging possession, going in 7-0 down at half-time.
The second half started in disastrous fashion for Castres, with Porical finishing off a fine move from the visitors to score Lyon's second try. He converted his own score, and at 14-0 it looked as if the game was up for the home side.
Knowing their survival was on the line, Castres came back, and after a number of charges it was Saimone Taumoepeau who burrowed over to give his side hope.
Rory Kockott couldn't convert from the touchline and Lyon responded with three points from Porical.
That made it 17-5, and with just 20 minutes to go, it seemed a long way back. Castres still weren't done though and on the hour they got their second try, Max Evans brilliantly claiming Kockott's speculative kick ahead of Mosese Ratuvou. This time Kockott converted from the touchline to make it 17-12.
The momentum was clearly with the home side, and their task got easier when Lyon were reduced to 13 men, losing Kendrick Lynn and Bogdan Balan in the space of a minute.
That allowed Castres to hit back, with Kockott spotting a gap off the back of a scrum and diving over. He couldn't convert but the home side were level.
Lyon hung on for the remainder of their numerical disadvantage before a penalty from Stephen Brett put them back in front, 20-17 up with five minutes to go.
Castres hit straight back, as the restart was knocked on and claimed in front, allowing Kockott to level matters once more.
And in the dying seconds Castres were awarded another penalty, which Kockott slotted from the left to make it 23-20 with seconds remaining.
Tries: Taumoepeau, Evans, Kockott
Pens: Kockott 2
Yellow Card: Samson
Red Card: Caballero
Tries: Arnold, Porical
Cons: Porical 2
Pens: Brett 2
Yellow Cards: Lynn, Balan
Castres: 15 Julien Dumora, 14 Sitiveni Sivivatu, 13 Thomas Combezou, 12 Romain Cabannes, 11 Rémy Grosso, 10 Rémi Talès, 9 Rory Kockott, 8 Johnnie Beattie, 7 Yannick Caballero, 6 Jannie Bornman, 5 Rodrigo Capo Ortega, 4 Christophe Samson, 3 Ramiro Herrera, 2 Brice Mach, 1 Yannick Forestier
Replacements: 16 Marc-Antoine Rallier, 17 Saimone Taumoepeau, 18 Ibrahim Diarra, 19 Benjamin Desroche, 20 Cedric Garcia, 21 Daniel Kirkpatrick, 22 Max Evans, 23 Karena Wihongi
Lyon: 15 Jérôme Porical, 14 Toby Arnold, 13 Kendrick Lynn, 12 Fabrice Estebanez, 11 Mosese Ratuvou, 10 Stephen Brett, 9 Ricky Januarie, 8 George Smith, 7 Pierrick Gunther, 6 Julien Puricelli, 5 Lionel Nallet, 4 Mickaël De Marco, 3 Anthony Roux, 2 Jean-Philippe Bonrepaux, 1 Emmanuel Felsina
Replacements: 16 Damien Fitzpatrick, 17 Bogdan Balan, 18 Deon Fourie, 19 Karim Ghezal, 20 Mathieu Lorée, 21 Waisale Sukanaveita, 22 Romain Loursac, 23 Horatiu Pungea
Referee: Alexandre Ruiz
Clermont 28-16 Bayonne
Stade Marcel Michelin, Clermont-Ferrand
Peceli Yato scored two tries as Clermont saw off a stubborn Bayonne side to move back to the top of the Top 14, at least temporarily.
With Bayonne having sent a second string team, Clermont wasted no time opening the scoring. Yato went over in the second minute, as the home side scored their first try before Bayonne had even touched the ball.
It came on the left after the ball had been spread wide, and he was over again after 12 minutes as Clermont threatened to run away with it.
A second penalty of the afternoon from Brock James made it 18-3 for Clermont, but Bayonne hit back just before half-time. After Sébastien Vahaamahina had been sin-binned, David Roumieu went over, with Martin Bustos Moyano converting.
James slotted a penalty on the stroke of half-time, but Bayonne responded early in the second half with three points from Bustos Moyano to make it 21-13.
Three more points from Bustos Moyano put Bayonne back in contention for an unlikely win, but their hopes were dealt a blow when Allan Gravier kicked the ball out of Thierry Lacrampe's hands and was sin-binned as a result.
With their opponents down to 14, Clermont took advantage, thanks to a try from Julien Bonnaire, to make it 28-16 with the conversion from Mike Delany.
Tries: Yato 2, Bonnaire
Cons: James, Delany
Pens: James 3
Yellow Card: Vahaamahina
Con: Bustos Moyano
Pens: Bustos Moyano 3
Yellow Card: Gravier
Clermont: 15 Jean-Marcellin Buttin, 14 Noa Nakaitaci, 13 Aurélien Rougerie, 12 Benson Stanley, 11 Zac Guildford, 10 Brock James, 9 Ludovic Radosavljevic, 8 Peceli Yato, 7 Alexandre Lapandry, 6 Julien Bonnaire (c), 5 Sébastien Vahaamahina, 4 Jamie Cudmore, 3 Clément Ric, 2 John Ulugia, 1 Vincent Debaty
Replacements: 16 Ti'i Paulo, 17 Thomas Domingo, 18 Julien Pierre, 19 Damien Chouly, 20 Thierry Lacrampe, 21 Mike Delany, 22 Napolioni Nalaga, 23 Daniel Kotze
Bayonne: 15 Martin Bustos-Moyano, 14 Bastien Fuster, 13 Lalakai Foketi, 12 Gabiriele Lovobalavu, 11 Jon Elissalde, 10 Mathieu Ugalde, 9 Bastien Duhalde, 8 Charles Ollivon, 7 Lisiate Fa'aoso, 6 Jean Monribot, 5 Allan Gravier, 4 Dewald Senekal, 3 Gert Muller, 2 David Roumieu, 1 Lucas Pointud
Replacements: 16 Simon Labouyrie, 17 Florian Lapeyrade, 18 Pelu Taele, 19 Baptiste Chouzenoux, 20 Guillaume Rouet, 21 Clement Otazo, 22 Clement Ancely, 23 JC van Rensburg
Referee: Maxime Chalon
Montpellier 15-15 La Rochelle
Altrad Stadium, Montpellier
Ben Lucas' late penalty helped Montpellier scrape a draw at home to La Rochelle to keep their play-off hopes alive.
It was cruel on La Rochelle, who outscored their opponents two tries to none, but couldn't kill off the game.
Montpellier opened up a 9-0 lead in the first 20 minutes thanks to three Lucas penalties as La Rochelle paid the price for their indiscipline.
Jean-Pascal Barraque pulled three points back for La Rochelle before half-time and they hit back early in the second half through their hooker Hikairo Forbes. It came after a powerful maul, with Forbes emerging from the pile of bodies.
This time the conversion was missed, but the relegation strugglers trailed just 9-8.
Lucas added another penalty to give Montpellier some breathing space, but they then lost Alex Tulou to a yellow card for an accumulation of penalties.
With the extra man, Montpellier took full advantage, Kini Murimurivalu going over after Uini Atonio had set up the move. Fabien Fortassin converted to make it 15-12 to the visitors, who were on the verge of a first away win of the season.
However there was still time for Montpellier to come back and they earned a penalty with time up, and Lucas made no mistake to save the draw.
Pens: Lucas 5
Yellow Card: Tulou
For La Rochelle:
Tries: Forbes, Murimurivalu
Montpellier: 15 Timoci Nagusa, 14 Samisoni Viriviri, 13 Rene Ranger, 12 Anthony Tuitavake, 11 Lucas Dupont, 10 Ben Lucas, 9 Benoit Paillaugue, 8 Akapusi Qera, 7 Ben Mowen, 6 Fulgence Ouedraogo (c), 5 Sitaleki Timani, 4 Robins Tchale-Watchou, 3 Nicolas Mas, 2 Charles Géli, 1 Yvan Watremez
Replacements: 16 Mickaël Ivaldi, 17 Mikheil Nariashvili, 18 Antoine Battut, 19 Alex Tulou, 20 Jonathan Pélissié, 21 Enzo Selponi, 22 Robert Ebersohn, 23 Pat Cilliers
La Rochelle: 15 Kini Murimurivalu, 14 Alofa Alofa, 13 Malietoa Hingano, 12 Levani Botia, 11 Sireli Bobo, 10 Jean-Pascal Barraque, 9 Julien Berger, 8 Kevin Gourdon, 7 Jone Qovu, 6 Loann Goujon, 5 Leandro Cedaro, 4 Romana Graham, 3 Uini Atonio (c), 2 Hika Forbes, 1 Thomas Synaeghel
Replacements: 16 Benjamin Geledan, 17 Vincent Pelo, 18 Mathieu Tanguy, 19 Nicolas Djebaili, 20 Julien Audy, 21 Fabien Fortassin, 22 Eliott Roudil, 23 Benoit Bourrust
Referee: Sébastien Minery
Racing-Métro 34-29 Grenoble
Stade Océane, Le Havre
Racing-Métro did just enough to see off Grenoble in a high-scoring encounter to keep the pressure on at the top.
With the game moved to Le Havre, it was the visitors who opened up an early lead, as former Racing fly-half Jonathan Wisniewski slotted two penalties.
Racing responded with a try from scrum-half Maxime Machenaud, as the scrum-half finished off a good move from the home three-quarters.
He converted his own try, but then Racing lost Eddy Ben Arous for ten minutes for a dangerous tackle.
Racing survived his absence but when they were back up to 15, they conceded for the first time. Xavier Mignot was the man to get over after Gio Aplon had put him into space.
That made it 16-7 to Grenoble, but Racing got back in touch before half-time thanks to a score from Antonie Claassen after good work off the back of a maul.
After trailing 16-14 at the break, Racing moved back in front thanks to a penalty from Machenaud early in the second half, with Nigel Hunt in the bin for Grenoble after a dangerous tackle.
Leading 17-16, Racing grabbed their third try through François van der Merwe who powered over, with Machenaud's conversion making it an eight-point lead.
Wisniewski and Machenaud then exchanged penalties before Gio Aplon's try got Grenoble back to within a point.
That set up a thrilling finale, however Juan Imhoff's late try, converted by Machenaud, looked to have made the game safe.
Grenoble responded though, with Wisniewski slotting a long-range penalty to make it 34-29.
Tries: Machenaud, Claassen, van der Merwe, Imhoff
Cons: Machenaud 4
Pens: Machenaud 2
Yellow Card: Ben Arous
Tries: Mignot, Aplon
Cons: Wisniewski 2
Pens: Wisniewski 5
Yellow Card: Hunt
Racing-Métro: 15 Brice Dulin, 14 Juan Imhoff, 13 Casey Laulala, 12 Henry Chavancy, 11 Marc Andreu, 10 Benjamin Dambielle, 9 Maxime Machenaud, 8 Antonie Claassen, 7 Camille Gerondeau, 6 Wenceslas Lauret, 5 François van der Merwe, 4 Juandre Kruger, 3 Luc Ducalcon, 2 Dimitri Szarzewski (c), 1 Eddy Ben Arous
Replacements: 16 Virgile Lacombe, 17 Julien Brugnaut, 18 Tomas Lavanini, 19 Thibault Dubarry, 20 Mike Phillips, 21 Johan Goosen, 22 Yoan Audrin, 23 Brian Mujati
Grenoble: 15 Gio Aplon, 14 Daniel Kilioni, 13 Chris Farrell, 12 Nigel Hunt, 11 Xavier Mignot, 10 Jonathan Wisniewski, 9 Charl McLeod, 8 Florian Faure, 7 Henry Vanderglas, 6 Peter Kimlin, 5 Hendrik Roodt, 4 Ben Hand, 3 Dayna Edwards, 2 Arnaud Héguy, 1 Fabien Barcella
Replacements: 16 Laurent Bouchet, 17 Denis Coulson, 18 Jono Owen, 19 Ross Skeate, 20 Mahamadou Diaby, 21 Joannes Henry, 22 Jackson Willison, 23 Fabien Gengenbacher
Referee: Laurent Cardona
Toulon 34-11 Brive
Stade Félix Mayol, Toulon
Four tries from David Smith saw Toulon go top of the table as they comfortably saw off Brive at Mayol.
With Clermont missing out on a bonus point against Bayonne, Toulon knew a bonus-point win would send them back to the summit of the Top 14.
After Nicolas Sanchez and Gaetan Germain exchanged early penalties, David Smith got his first try, cutting inside after Josua Tuisova had made the initial break.
Toulon were dominating possession and territory, and went over again when the Brive defence finally cracked after a relentless series of attacks. Juan Smith was on the end of it, powering over, with Sanchez converting to make it 15-3.
Brive were struggling up front, with Damien Jourdain sent to the sin-bin after a series of scrum infringements close to their own line. It seemed harsh, with Xavier Chiocci clearly driving across, as was shown when Cédric Marchat changed sides of the scrum and penalised the Toulon loosehead.
By that time, Brive were down to 14 men, and had conceded another try, as David Smith shrugged off yet more tackles to dive over.
Toulon made their bonus point safe as David Smith completed his hat-trick early in the second half, finding space down the right to race over, moving to the top of the Top 14 try-scoring charts in the process.
Brive could have fallen apart at that point, but they responded with a try of their own from Alfi Mafi. It came after Nicolas Bezy looked to have blown the chance with an ill-advised kick when he had an overlap to his left. Brive got the ball back though and Mafi broke the line before outpacing Delon Armitage as he tried to cover across.
That meant Toulon were just three tries clear, but David Smith went over again with six minutes to go to record a fourth try of the evening, handing off Elia Radikedike on his way to the line.
Smith even thought he'd scored a fifth try after a stunning one-handed take by Romain Taofifenua but Juan-Martin Fernandez Lobbe's pass was forward.
Tries: D Smith 4, J Smith
Cons: Sanchez 3
Pens: Germain 2
Yellow Cards: Jourdain
Toulon: 15 Delon Armitage, 14 Josua Tuisova, 13 Mathieu Bastareaud, 12 Maxime Mermoz, 11 David Smith, 10 Nicolas Sánchez, 9 Sébastien Tillous-Borde, 8 Chris Masoe, 7 Steffon Armitage, 6 Juan Smith, 5 Jocelino Suta, 4 Romain Taofifenua, 3 Carl Hayman (c), 2 Guilhem Guirado, 1 Xavier Chiocci
Replacements: 16 Jean-Charles Orioli, 17 Alexandre Menini, 18 Ali Williams, 19 Juan-Martin Fernández Lobbe, 20 Drew Mitchell, 21 Juan-Martin Hernández, 22 Eric Escande, 23 Levan Chilachava
Brive: 15 Gaetan Germain, 14 Elia Radikedike, 13 Sevenaia Galala, 12 Thomas Sanchou, 11 Benito Masilevu, 10 Nicolas Bezy, 9 Jean-Baptiste Pejoine, 8 Sisa Koyaimabole, 7 Said Hireche, 6 Kieran Murphy, 5 Arnaud Méla (c), 4 Peet Marais, 3 Damien Jourdain, 2 Thomas Acquier, 1 Karlen Asieshvili
Replacements: 16 François Da Ros, 17 Goderdzi Shvelidze, 18 Dominiko Waqaniburotu, 19 Poutasi Luafutu, 20 Damien Neveu, 21 Riaan Swanepoel, 22 Alfi Mafi, 23 Giorgi Jgenti
Referee: Cedric Marchat