Toulouse overcame the first-half dismissal of Zack Holmes to beat Racing 92 22-21 in a thrilling Heineken Champions Cup quarter-final.
Holmes was sent off for a high tackle on Juan Imhoff midway through the first half with his side trailing 10-7, but tries from Maxime Medard and Antoine Dupont, his second of the game, gave Toulouse the upper hand.
Maxime Machenaud reduced the gap to three points with two penalties in the second half and although a penalty from Thomas Ramos gave Toulouse a 22-16 lead, the home side had a chance to snatch victory when Camille Chat went over in the corner.
However, Machenaud could not land the difficult conversion and the home side also had a try from Virimi Vakatawa disallowed in the closing minutes after he was penalised for an infringement at the lineout.
The four-time winners will now face defending champions Leinster in the semi-final in Dublin.