Toulouse shrugged off a first-half red card to claim a 22-21 victory against Racing 92 in their European Champions Cup quarter-final in Paris on Sunday.
Toulouse put in a massive defensive performance after losing flyhalf Zack Holmes to a red card for a high tackle in the 23rd minute.
The visitors adapted their game well, though, and young scrumhalf Antoine Dupont impressively adjusted to the No 10 role.
Toulouse will next face defending champions Leinster in Dublin on 21 April, with Saracens taking on Munster in Coventry on 20 April.
After a competitive start to the match, Toulouse opened the scoring when Dupont spotted a gap in the Racing defence and dived over for the first try.
Racing hit back through a penalty from Maxime Machenaud before star flyhalf Finn Russell intercepted a pass and played a delightful kick for wing Teddy Thomas, who gathered and scored to put the Parisians 10-7 ahead.
The hosts then received a massive advantage when referee Luke Pearce sent Holmes off for a dangerous challenge on hooker Dimitri Szarzewski. Surprisingly, it was Toulouse who upped their game, dominating possession and territory and taking a 19-10 half-time lead thanks to tries from Maxime Medard and another from Dupont.
Machenaud knocked over another couple of penalties for Racing to make it 19-16. Toulouse then punished Racing wing Juan Imhoff’s yellow card as Thomas Ramos extended their lead with a difficult penalty.
It was a heart-stopping end to the match as Cheslin Kolbe mishandled the ball 5m from his own line, allowing Racing hooker Camille Chat to score in the corner, but Machenaud missed his touchline conversion.
The hosts thought they had got a winning try when Virimi Vakatawa muscled his way over the line, but the TMO correctly ruled it out for an earlier infringement, allowing Toulouse to see out the game for a famous victory.
Racing 92 – Tries: Teddy Thomas, Camille Chat. Conversion: Maxime Machenaud. Penalties: Machenaud (3).
Toulouse – Tries: Antoine Dupont (2), Maxime Medard. Conversions: Zack Holmes, Romain Ntamack. Penalty: Thomas Ramos.
Racing 92 – 15 Simon Zebo, 14 Teddy Thomas, 13 Virimi Vakatawa, 12 Henry Chavancy, 11 Juan Imhoff, 10 Finn Russell, 9 Maxime Machenaud, 8 Antonie Claassen, 7 Bernard le Roux, 6 Baptiste Chouzenoux, 5 Leone Nakarawa, 4 Donnacha Ryan, 3 Ben Tameifuna, 2 Dimitri Szarzewski, 1 Guram Gogichashvili
Subs: 16 Camille Chat, 17 Eddy Ben Arous, 18 Cedate Gomes Sa, 19 Dominic Bird, 20 Boris Palu, 21 Antonie Gibert, 22 Wenceslas Lauret.
Toulouse – 15 Cheslin Kolbe, 14 Lucas Tauzin, 13 Sofiane Guitone, 12 Romain Ntamack, 11 Maxime Medard, 10 Zack Holmes, 9 Antoine Dupont, 8 Jerome Kaino, 7 Francois Cros, 6 Rhynardt Elstadt, 5 Richie Gray, 4 Richie Arnold, 3 Charlie Faumuina, 2 Peato Mauvaka, 1 Cyril Baille.
Subs: 16 Guillaume Marchand, 17 Clement Castes, 18 Maks van Dyk, 19 Selevasio Tolofua, 20 Piula Faasalele, 21 Sebastian Bezy, 22 Thomas Ramos, 23 Pita Ahki.
Photo: Dan Mullan/Getty Images