Montpellier moved up to third spot in the Top 14 standings while there were also wins for Brive, Grenoble and Pau in Saturday's action.
Earlier in the day, Toulon edged Racing 92 in Paris, with two games taking place on Sunday.
Racing 92 20-21 Toulon
Brive 23-22 Castres
Grenoble 39-23 La Rochelle
Agen 21-45 Montpellier
Pau 25-6 Oyonnax
Brive 23-22 Castres
Stade Amédée Domenech, Brive
Brive picked up their ninth win of the season on Saturday thanks to a late try that stunned Castres, who thought they had the game won.
It was a try-less opening half as Castres went 3-6 into the half-time break thanks to penalties from wing Julien Caminati and fly-half Ben Urdapilleta. In reply it took Brive 40 minutes to trouble the scorers when full-back Gaetan Germain landed his side's first points of the contest.
Few would have guessed what was to come in the second-half as a see-saw half ended with hosts Brive winning thanks to a try in added time.
Urdapilleta and Germain would trade penalty goals early on before Caminati made it 6-12 to Castres with his second shot of the match on 55 minutes.
But then the game moved up a gear as first Damien Jourdain scored for Brive, with Germain's conversion pushing them 13-12 ahead and then Urdapilleta soon landed three points that push his side back in front. Germain did likewise though on the hour mark to set up a big finish.
And so it proved as Thomas Combezou's converted try looked to have won the game for Castres on 77 minutes but Brive did not give up and unbelievably were rewarded with time up on the clock as Arnaud Mignardi's score handed Germain the kick to win the game. He obliged.
Tries: Jourdain, Mignardi
Cons: Germain 2
Pens: Germain 3
Pens: Caminati 2, Urdapilleta 3
Brive: 15 Gaetan Germain, 14 Guillaume Namy, 13 Arnaud Mignardi, 12 Benjamin Petre, 11 Benito Masilevu, 10 Nicolas Bézy, 9 Jean-Baptiste Pejoine, 8 Petrus Hauman, 7 Poutasi Luafutu, 6 Said Hireche, 5 Dominiko Waqaniburotukula, 4 Johan Snyman, 3 Kevin Buys, 2 Francois Da Ros, 1 Lucas Pointud
Replacements: 16 Guillaume Ribes, 17 Karlen Asieshvili, 18 Arnaud Mela, 19 Sisa Koyamaibole, 20 Bastien Duhalde, 21 Matthieu Ugalde, 22 Alfi Mafi, 23 Damien Jourdain
Castres: 15 Geoffrey Palis, 14 Julien Caminati, 13 Thomas Combezou, 12 Rémi Lamerat, 11 David Smith, 10 Ben Urdapilleta, 9 Julien Seron, 8 Alex Tulou, 7 Alexandre Bias, 6 Yannick Caballero, 5 Rodrigo Capo Ortega, 4 Christophe Samson, 3 Yohan Montes, 2 Marc-Antoine Rallier, 1 Mihai Lazar
Replacements: 16 Julien Beziat, 17 Antoine Tichit, 18 Benjamin Desroches, 19 Piula Faasalele, 20 Antoine Dupont, 21 Julien Dumora, 22 Florian Vialelle, 23 Lucas Martinez
Referee: Jérôme Garcès
Grenoble 39-23 La Rochelle
Stade des Alpes, Grenoble
Grenoble claimed a much-needed bonus-point win over La Rochelle on Saturday in a result that moves them above their opponent in the table.
The hosts, who had lost ten of their eighteen games in the league this season, were trailing by seven points after the opening quarter of the match when centre Lepani Botia went over for La Rochelle, with Jean Pascal Barraque adding the conversion for the visiting outfit.
But fly-half Jonathan Wisniewski struck a penalty three minutes later before Zach Holmes cancelled that out to make it 3-10 on 31 minutes.
Then came a late surge in the half from Grenoble as Wisniewski first claimed a converted try and then landed a 39th minute penalty before wing Xavier Mignot crossed with seconds remaining, Wisniewski's extra two points meaning that the hosts were 20-10 up at the interval.
Holmes reduced the margin to four points soon after the break but Grenoble then came to life, with Wisniewski's second try of the contest pushing them 27-16 in front and looking for another try that would put them in try bonus-point territory. They had 25 minutes to find it.
It took just nine as Mignot was the next to cross the whitewash for his brace, Wisniewski's conversion meaning it was now a 34-16 buffer.
And despite Hikairo Forbes scoring for La Rochelle, replacement Walter Desmaison crossed for Grenoble soon after to seal the maximum.
Tries: Wisniewski 2, Mignot 2, Desmaison
Cons: Wisniewski 4
Pens: Wisniewski 2
For La Rochelle:
Tries: Botia, Forbes
Cons: Barraque, Holmes
Pens: Holmes 3
Grenoble: 15 Gio Aplon, 14 Maritino Nemani, 13 Chris Farrell, 12 Nigel Hunt, 11 Xavier Mignot, 10 Jonathan Wisniewski, 9 Charl McLeod, 8 Rory Grice, 7 Mahamadou Diaby, 6 Steven Setephano, 5 Hendrik Roodt, 4 Ben Hand, 3 Dayna Edwards, 2 Arnaud Heguy, 1 Fabien Barcella
Replacements: 16 Loïck Jammes, 17 Denis Coulson, 18 Peter Kimlin, 19 Fabien Alexandre, 20 James Hart, 21 Gilles Bosch, 22 Fabien Gengenbacher, 23 Walter Desmaison
La Rochelle: 15 Kini Murimurivalu, 14 Jean Pascal Barraque, 13 Pierre Aguillon, 12 Lepani Botia, 11 Mali Hingano, 10 Zack Holmes, 9 Ricky Januarie, 8 Jone Qovu, 7 Afaesetiti Amosa, 6 Romain Sazy, 5 Leandro Cedaro, 4 Jason Eaton, 3 David Fe'ao, 2 Maxime Gau, 1 Thomas Synaeghel
Replacements: 16 Hikairo Forbes, 17 Mike Corbel, 18 Mathieu Tanguy, 19 Zeno Kieft, 20 Julien Audy, 21 Ryan Dubois, 22 Pierre Berard, 23 Uini Atonio
Referee: Tual Trainini
Agen 21-45 Montpellier
Stade Armandie, Agen
Montpellier moved to within two points of the Top 14 summit after they picked up a bonus-point triumph at Agen on Saturday.
Jake White's men led 10-7 at half-time with all of the points arriving in the opening quarter, offering fans hope of a high-scoring game.
Pierre Spies had got the ball rolling for Montpol with a score on five minutes before Agen scrum-half Alexis Bales hit back with his try.
But that was as good as things got for the hosts in the opening half as Demetri Catrakilis landed a penalty that pushed the visitors in front.
Montpellier returned from the break looking strong and when Bismarck du Plessis went over on 48 minutes, the margin was up to ten.
However, Agen would not go away and a penalty try five minutes later got them back within reach to set up an intriguing final 20 minutes.
Montpol though were too strong on the night as hooker Du Plessis' second try, converted by Benoît Paillaugue, pushed them 24-14 ahead.
The visitors were in full control and further tries would arrive from Timoci Nagusa (2), either side of Tamaz Mchedlidze's crossing for Agen. That meant a last-minute score from Wian Liebenberg proved to be the bonus-point effort for Montpellier, who will head home delighted.
Tries: Bales, Penalty, Mchedlidze
Cons: Francis 2, Darbo
Tries: Spies, B du Plessis 2, Nagusa 2, Liebenberg
Cons: Catrakilis, Steyn, Paillaugue 4
Agen: 15 Mathieu Lamoulie, 14 George Tilsley, 13 Johann Sadie, 12 Lionel Mazars, 11 Pierre Fouyssac, 10 Burton Francis, 9 Alexis Bales, 8 Luke Hamilton, 7 Antoine Erbani, 6 Marco Kotze, 5 William Demotte, 4 Api Ratuniyarawa, 3 Dave Ryan, 2 Jalil Narjissi, 1 Arsene Nnomo
Replacements: 16 Mike Tadjer, 17 Viliamu Afatia, 18 Marc Baget-Rabarou, 19 Sione Tau, 20 Clement Darbo, 21 François Bouvier, 22 Tamaz Mchedlidze, 23 Arthur Joly
Montpellier: 15 Jesse Mogg, 14 Timoci Nagusa, 13 Robert Ebersohn, 12 Frans Steyn, 11 Benjamin Fall, 10 Demetri Catrakilis, 9 Nic White, 8 Pierre Spies, 7 Jacques du Plessis, 6 Wian Liebenberg, 5 Thibault Privat, 4 Robins Tchale-Watchou, 3 Nicolas Mas, 2 Mickael Ivaldi, 1 Yvan Watremez
Replacements: 16 Bismarck du Plessis, 17 Mikheil Nariashvili, 18 Fulgence Ouedraogo, 19 Kelian Galletier, 20 Benoît Paillaugue, 21 Ben Lucas, 22 Marvin O'Connor 23 Davit Kubriashvili
Referee: Maxime Chalon
Pau 25-6 Oyonnax
Stade du Hameau, Pau
Oyonnax remain cut adrift alongside Agen at the Top 14 basement after they suffered another defeat, falling to Pau at Stade du Hameau.
Pau had a solid first period and went in 18-6 up thanks to tries from Julien Fumat and Samuel Marques, the latter also kicking eight points.
In reply two Nicky Robinson penalties were carded by Oyonnax in a game they knew was simply must-win if they are to avoid relegation.
But they couldn't manage that as it was Pau's night, with the top flight newcomers adding a 79th minute penalty try to secure what is their eighth victory of the campaign as they remain in eleventh place, comfortably above the trapdoor places which of course include Oyonnax.
Tries: Fumat, Marques, Penalty
Con: Marques, Daubagna
Pen: Marques 2
Pen: Robinson 2
Pau: 15 Damien Traille, 14 Sireli Bobo, 13 Conrad Smith, 12 Jale Vatubua, 11 Julien Fumat, 10 Colin Slade, 9 Samuel Marques, 8 James Coughlan, 7 Paddy Butler, 6 Daniel Ramsay, 5 Abdellatif Boutaty, 4 Julien Pierre, 3 Juan Pablo Orlandi, 2 Thomas Bianchin, 1 Julien Jacquot
Replacements: 16 Quentin Lespiaucq, 17 Chris King, 18 Jovili Domolailai, 19 Jean Bouilhou, 20 Thibault Daubagna, 21 Brandon Fajardo, 22 Watisoni Votu, 23 Euan Murray
Oyonnax: 15 Silvere Tian, 14 Dug Codjo, 13 Jimmy Yobo, 12 Eamon Sheridan, 11 Uwanakaro Tawalo, 10 Nicky Robinson, 9 Fabien Cibray, 8 Maurie Fa'asavalu, 7 Pierrick Gunther, 6 Patrick Sobela, 5 Geoffrey Fabbri, 4 George Robson, 3 Marc Clerc, 2 Jody Jenneker, 1 Lukas Rapant
Replacements: 16 Thomas Bordes, 17 Laurent DelBoulbes, 18 Leon Power, 19 Viliami Ma'afu, 20 Julien Blanc, 21 Quentin Etienne Lecoq, 22 Florian Denos, 23 Stan Wright
Referee: Adrien Descottes