A brace of tries from Cheslin Kolbe helped Toulouse open their Heineken Champions Cup campaign with a rare win in Belfast, where they defeated Ulster 29-22.
The four-time champions left the Kingspan with a bonus point from this Pool B opener after Antoine Dupont and Rory Arnold also touched down in what was a closely fought affair, with Thomas Ramos kicking three conversions and a late penalty.
Last season Kolbe tormented Ulster in the quarter-finals in the competition and he added another brace against the Irish province on a wet surface in Belfast.
Ulster scored three tries, Rob Herring claiming two while Ian Madigan also dotted down, and now look to be up against it regarding their chances of making the last eight for a third season running.
Ulster had led 12-0 thanks to Herring's early try and Madigan's score which soon followed.
But Toulouse battled back to lead 14-12 at half-time and the game remained in the balance until the closing stages, with Maxime Medard having been yellow-carded just before the 70th minute.
Ulster had the opening score on 13 minutes after a line-out maul was driven over the line aided by backs Jacob Stockdale and Stuart McCloskey, with Herring touching the ball down.
John Cooney's conversion was good, though he missed a much more difficult effort three minutes later when Madigan slid over for Ulster's second try.
Ulster were 12-0 up just 16 minutes in, but the visitors showed how dangerous they are going forward and hit back when Kolbe was given some space.
The South African chipped the ball forward before collecting and sliding over, with Ramos providing a superb touchline conversion to cut Ulster's lead to five points.
There was no further movement on the scoreboard until the final minutes of the half, when Ulster lost the lead with the last play.
Stockdale cleared up a difficult ball from Dupont and though Ulster drove him forward, the maul was held up and Toulouse were awarded a scrum.
Despite the visitors' set-piece looking messy and it appearing that there might have been a knock on, Dupont broke clear and from close to the halfway line drew Ulster's scramble defence before scoring at the posts.
That tied the scores, but Ramos easily slotted the two points to put Toulouse 14-12 ahead at the break.
An early infringement and chat back to the referee helped Ulster nudge back in front again on 43 minutes, Cooney kicking the straightforward penalty before firing wide from a greater distance two minutes later.
Toulouse then bagged their third try on 51 minutes and, after a scrum penalty and kicking for the corner, Arnold was the player to touch down after the inevitable maul.
Ramos' conversion was good, putting Toulouse ahead again at 21-15.
But Ulster came back again with a carbon copy of their opening try, as Herring again broke clear from a driving maul for his second score. Cooney's conversion of the 56th-minute try put the hosts one point in front.
Eight minutes later and the lead changed hands again. Ramos' kick-pass released Romain Ntamack, whose inside pass nearly had Medard through.
Toulouse recycled and moved the ball to the right, where Kolbe got the better of Stockdale to cross for his second and Toulouse's bonus point.
Ramos missed the touchline conversion, but the visitors now led 26-22 with 16 minutes to play.
Ulster came again and, after Stockdale had caused mayhem from a kick-pass, Medard was yellow-carded, though the home side were unable to profit from two line-outs near the Toulouse line.
Ramos then added a final touch with a 76th-minute penalty from long range.