Castres were rewarded for a fine backs-against-the-wall showing amid late pressure to upset Racing 92 19-14 and book a Top 14 final against Montpellier.

A star-studded Racing side who finished second in the regular season and lost the European Champions Cup final to Leinster were clear favourites in the semi-final contest at Groupama Stadium.

But Castres, champions in 2013, benefitted from Racing's ill-discipline before holding out with 14 men for most of the closing stages following Julien Dumora's sin-binning.

Racing had a try ruled out in each half but, despite outscoring the underdogs two tries to one, were unable to find the killer blow.

Castres struck first when Maama Vaipulu crashed over from a maul. Benjamin Urdapilleta kicked the extras and then added a three-pointer to stretch the early lead to 10.

Louis Dupichot saw a try chalked off for a Racing infringement in the build-up, but the Paris side did respond when Juan Imhoff showed electric pace from Remi Tales' offload to dot down.

Dupichot then broke the lines to score Racing's second, only for ill-discipline to creep into their game, allowing Urdapilleta to kick two penalties either side of a yellow card for Ben Tameifuna, moving Castres back in front.

Racing could have been punished more for that sin-binning, but Urdapilleta and Rory Kockott each missed from the tee.

Racing scrum-half Teddy Iribaren thought he had punished those missed kicks when he broke following a line-out to score under the posts, only for the play to be called back for a forward pass.

Urdapilleta then gave Castres some breathing space by once again splitting the posts, although Dumora's yellow for a high tackle on Imhoff with 14 minutes remaining saw their numbers depleted with the lead at just five.

Racing peppered the line and had a series of close-range scrums in a dramatic finish, but Castres held firm for a fine win.