Castres’ line speed and pressure on passes forced Saints into some early handling errors, one of which led to the visitors taking a deserved lead after eight minutes.
Scrum-half Jeremy Fernandez took the ball from a scrum and broke down the blind side before putting a perfectly weighted kick behind the Saints defence for winger Ambadiang to race onto and score.
They had a second soon after when Ambadiang intercepted a loose pass and the ball was moved wide for Chabouni to stride over and make it 12-0.
Saints were on the board after 15 minutes with a penalty try for an Ambadiang high tackle on Archie McParland as he looked set to score, with the Castres winger yellow-carded.
They were down to 13 men after 18 minutes when lock Guillaume Ducat recklessly cleared out Henry Pollock at a ruck but they stretched their lead despite their numerical disadvantage with a Fernandez penalty before Saints hit back through Fischetti.
Castres took a one-point lead into the break but the hosts went in front for the first time two minutes into the second half when Furbank created space for Kemeny to dive over.
Last season’s runners-up Saints seemed to seize control of the contest when Furbank sent Freeman over the line to make it 26-15 but Ardron intercepted McParland’s pass to fire back immediately and keep Castres in the contest.
The home crowd was left stunned as Karawalevu powered over from first-phase ball to make it 28-27 in the 56th minute and the winger thought he had another score soon afterwards to put Castres ahead – but it was pulled back for a knock-on from the restart.
That proved crucial as, moments later, Furbank picked a perfect line though the visiting defence to race over from distance and settle his side’s nerves with a fifth try and McParland added a sixth shortly after the hour.
Castres received a third yellow card of the night in the 69th minute when Veresa Ramototabua departed and Dingwall made the most of the extra space immediately to give Saints just about enough breathing room to see out the victory.
“It was a fairly disjointed 80 minutes, to be honest,” England centre Dingwall told BBC Radio 5 Live.
“We just never really got going or into our flow to put consistent pressure on them. Each time we scored a couple of tries and then gave them a bit of a freebie back.
“Unfortunately we weren’t quite at our best today, but we’ve won the game, we move on to next week and there’s lots to take out of this.”