Toulouse condemned Ulster to a first home defeat in 26 matches as they edged a thrilling seven-try European Champions Cup contest in Belfast.
The hosts took an early lead through tries from Rob Herring and Ian Madigan before Cheslin Kolbe and Antoine Dupont responded for the visitors.
Rory Arnold and Herring traded second-half scores before wing Kolbe showed his sparkling feet once more to cross for the decisive try.
Ulster did claim a losing bonus point.
With an away trip to France to come, the home defeat is already a significant blow to Ulster's quarter-final hopes in this season's competition.
Their first defeat at Kingspan Stadium since October 2018, Dan McFarland's side fell short against the star-studded French outfit in a thoroughly entertaining start to the 2020-21 competition.
Special tries light up first half
Amid miserable conditions in Belfast, both sides could have been forgiven for opting to play out an attritional contest.
However in spite of the weather, the teams produced a highly-entertaining game mixing accurate set-pieces with explosive running rugby.
In the opening exchanges, Ulster skipper Sam Carter twice instructed Madigan to go for the corner, passing up three points in favour of setting up Ulster's most effective attacking platform, the rolling maul.
The decision paid off with Herring rolling over as the ballast of the Ulster pack, and the additional help of Jacob Stockdale and Stuart McCloskey saw the hooker power over.
If the first score was a show of power, the second just three minutes later was one of ruthless precision and accuracy.
From a scrum on halfway, scrum-half John Cooney played a wraparound with Madigan, bringing Matt Faddes and James Hume into play before the ball was moved back to Madigan to scamper over.
Already a different proposition from the side who finished a distant second when the sides met in September, Ulster were flying high on confidence but Toulouse roared back with a special score of their own.
South African wing Kolbe, Ulster's chief tormentor two months ago, chipped and chased having collected the ball on halfway to reduce the arrears on 20 minutes.
A breathless opening quarter gave way to a more reserved period with both sides testing out the other's handling ability as the rain continued to pour.
Ulster looked set to take a lead into the break, only for Six Nations player of the tournament Dupont to snipe through a gap and charge to the line to give the visitors a two-point half-time advantage.
Toulouse find the edge in spiky contest
On the day Northern Ireland's two-week circuit breaker ended, 500 fans were in attendance and added their voices to a game that reached boiling point on a number of occasions during the second half.
Despite the rain easing, the battle up front became more prominent with the sheer muscle of Toulouse's forwards allowing Arnold to burst over on 53 minutes.
Despite being behind, Ulster remained firmly in the contest despite the loss of the irreplaceable Marcell Coetzee shortly after the break.
Again the hosts used a penalty inside Toulouse territory to set up a rolling maul, and again the decision paid dividends, this time Herring breaking off the back to put his side ahead once more.
The decisive score came 15 minutes from time, Kolbe again providing the cutting edge as Toulouse swung the ball to the Springbok's wing, allowing him to step inside and add the final try of the game.
Maxime Medard's sin-binning 10 minutes from time gave Ulster a boost going into the final chapter of an engrossing contest, but a lost lineout on the five-metre line put paid to their chances of a late comeback.
Ulster: Lowry; Faddes, Hume, McCloskey, Stockdale; Madigan, Cooney; O'Sullivan, Herring, Moore; O'Connor, Carter; Rea, Reidy, Coetzee.
Replacements: Andrew, Warwick, O'Toole, O'Connor, Jones, Mathewson, Moore, Gilroy.
Toulouse: Médard; Lebel, Guitoune, Ntamack, Kolbe; Ramos, Dupont; Baille, Marchand, Faumuina; Arnold, Tekori; Elstadt, Placines, Tolofua.
Replacements: Marchand, Neti, Ainu'u, Meafou, Madaule, Youyoutte, Ahki, Bales.