Castres all but ended Northampton's aspirations of going one better in the Heineken Cup this season after they fell 41-22 at Stade Pierre Antoine.
The hosts got off to a dream start, going 7-0 up in the first few minutes. Flanker Steve Malonga bundled over, with Romain Teulet adding the two.
Northampton responded well though, with a try of their own after ten minutes, Mark Sorenson diving over before Stephen Myler's conversion tied it up.
The game was very much even for a short period after that, with two Romain Teulet penalties for Castres the only scores for the next 20 minutes.
Northampton kept pushing though, and went over for a second try on the half hour mark, Jamie Elliott the scorer. Myler failed to add the extras, but the English side were keeping in touch.
The French side pushed on until the interval though, which saw them go into the break with a healthy 23-12 lead.
Teulet added another penalty to his growing personal tally, and right on the half time whistle, Romain Martial dived over to leave Castres eleven points ahead.
Northampton dug deep at the start of the second half however, and after just four minutes, Jamie Elliott grabbed his second try of the game.
Romain Teulet hit back with yet another penalty for Castres, the full-back having a flawless day with the boot.
The Saints needed scores, and fast, knowing a win was all that would save their campaign, and when number eight Samu Manoa touched down with twenty minutes to play, Northampton were still in the contest.
The game went downhill for them after that though, as the home side began to completely dominate, partly due to the fact they had a man extra after a Northampton sin bin. Teulet landed his fifth placed kick with fifteen minutes left, and when Romain Martial dived over for his second try of the game, the Saints were dead and buried.
Castres were desperate to score another try to get the bonus point they needed, and were rewarded late on when Ibrahim Diarra went over to secure the victory.
Tries: Malonga, Martial 2, Diarra
Con: Teulet 3
Pen: Teulet 5
Tries: Sorenson, Elliott 2, Manoa
Castres: 15 Romain Teulet, 14 Romain Martial, 13 Thomas Sanchou, 12 Seremaia Bai, 11 Max Evans, 10 Rémi Tales, 9 Rory Kockott, 8 Chris Masoe, 7 Steve Malonga, 6 Ibrahim Diarra, 5 Rodrigo Capo Ortega, 4 Scott Murray, 3 Luc Ducalcon, 2 Marc-Antoine Rallier, 1 Michaël Coetzee.
Replacements: 16 Mathieu Bonello, 17 Anton Peikrishvili, 18 Rossouw Kruger, 19 Matthias Rolland, 20 Yannick Caballero, 21 Paul Bonnefond, 22 Pierre Bernard, 23 Thierry Lacrampe.
Northampton: 15 Ben Foden, 14 Vasily Artemyev, 13 George Pisi, 12 Tom May, 11 Jamie Elliott, 10 Stephen Myler, 9 Lee Dickson, 8 Samu Manoa, 7 Ben Nutley, 6 Tom Wood, 5 Mark Sorenson, 4 Courtney Lawes, 3 Paul Doran Jones, 2 Dylan Hartley (capt), 1 Soane Tonga'uiha.
Replacements: 16 Mike Haywood, 17 Alex Waller, 18 Brian Mujati, 19 James Craig, 20 James Ingle, 21 Martin Roberts, 22 Ryan Lamb, 23 Jon Clarke.
Referee: John Lacey (Ireland)
Assistant referees: Michael Black (Ireland), Trevor Collins (Ireland)
Television match official: Marshall Kilgore (Ireland)