Northampton put up a brave fight but were out-muscled by Toulouse.
HEINEKEN CUP Pool Three
Toulouse (16) 25
Pen: Michalak, Elissalde (5)
Northampton (9) 12
Pen: Drahm (4)
The power of the French pack told through Jean-Baptiste Poux's first-half push-over try while Jean-Baptiste Elissalde slotted maximum points.
But the Zurich strugglers somehow kept in touch through the boot of stand-in stand-off Shane Drahm.
They were just seven points behind five minutes from time, despite Matt Lord's sin-binning and Andrew Blowers' injury, but Elissalde kicked the French home.
Having replaced the injured Frederic Michalak, Elissalde kicked five out of five penalties and a conversion, as the French did just enough to overturn last week's defeat on English soil.
Northampton, with three wins in Europe despite their league form, certainly meant business - catching the French cold and taking a 3-0 lead after just a few minutes following a storming 20-yard drive spear-headed by skipper Steve Thompson, Drahm kicking the first of four penalties.
But Toulouse were quickly ahead 9-3, despite Michalak's being replaced by Elissalde following a challenge by Blowers - who was himself later stretchered off.
The Toulouse pack were starting to fire on full power, and they had their reward on 20 minutes when a patient drive ended with Poux touching down beneath the pile.
Elissalde slotted the conversion to make it 16-6, but still the French failed to cut loose, a Ben Cohen inspired counter-attack ending in another successful Drahm penalty to make it 16-9 at the interval.
Another French chance went begging early in the second half when Heymans knocked on over the line, and Saints looked in disarray when referee Donal Courtney finally lost patience with Lord and sent him to the sin bin.
But Northampton somehow managed to deny a French score while a man down, Lord rejoining the fray just in time to help successfully defend another Toulouse power play into the corner.
Instead it was Northampton who got the points on the board, Drahm slotting a huge kick to cut the deficit to seven points.
Saints battled bravely to hang on to the bonus point, but the French eased out of reach with a couple more Elissalde penalties.
Toulouse: Jeanjean; Clerc, Jauzion, Thomas, Heymans; Michalak, Dupuy; Collazo, Servat, Hassan; Lamboley, Pelous (capt); Bouilhou, Maka, Labit.
Replacements: Bru, Lacombe, Millochlusky, Montauriol, Elissalde, Fritz, Poitrenaud.
Northampton: Reihana; Human, Cohen, Stcherbina, Clarke; Drahm, Robinson; Budgen, Thompson, Morris; Lord, Browne; Krige, Blowers, Soden.
Replacements: Richmond, Sturgess, O'Donoghue, Seely, Howard, Grayson, Vilk.
Referee: Donal Courtney (Ireland).