Johan Goosen slotted an important penalty as Racing 92 clinched a 19-16 win over the Leicester Tigers to set up a Champions Cup final against Saracens.
Although the scoreline suggests it was a closely-fought affair, Racing led as early as the third minute when scrumhalf Maxime Machenaud went over to score.
New Zealand's World Cup-winning flyhalf Dan Carter kept the scoreboard ticking over, while Goosen, who started at outside centre, slotted an angled penalty to extend Racing's lead to 19-9 with just over five minutes left to play.
It would prove to be a crucial three-pointer as Leicester wing Telusa Veainu managed to score late in the game, but in the end it was Racing that celebrated their progression to the final in Lyon on 14 May.
Leicester will be left to lament an error-riddled first-half performance, with their handling particularly letting them down as Racing opened up a 13-6 lead at the break.
Tigers replacement Owen Williams reduced that deficit to four points with an early penalty in the second half, but Carter responded with his third three-pointer soon after to bring his tally for the night to 11 points.
Goosen then looked to have put Racing into a commanding lead when he dotted down, but the try was disallowed after a forward pass was picked up on earlier in the movement. Nevertheless, Goosen would open up a 10-point buffer for Racing when he slotted a superb long-distance penalty as the clock wound down.
Veainu's late try led to a dramatic finish to the match, but in the end Racing's defence stood strong, and the French side were able to complete their passage to their first-ever European Champions Cup final.
Leicester – Try: Telusa Veainu. Conversion: Owen Williams. Penalties: Freddie Burns, Williams (2).
Racing 92 – Try: Maxime Machenaud. Conversion: Dan Carter. Penalties: Carter (3), Johan Goosen.
Leicester – 15 Mathew Tait (c), 14 Telusa Veainu, 13 Peter Betham, 12 Manu Tuilagi, 11 Vereniki Goneva, 10 Freddie Burns, 9 Ben Youngs, 8 Opeti Fonua, 7 Lachlan McCaffrey, 6 Mike Fitzgerald, 5 Graham Kitchener, 4 Dom Barrow, 3 Dan Cole, 2 Harry Thacker, 1 Marcos Ayerza
Subs: 16 Greg Bateman, 17 Logovi’i Mulipola, 18 Fraser Balmain, 19 Ed Slater, 20 Tom Croft, 21 Sam Harrison, 22 Owen Williams, 23 Adam Thompstone
Racing 92 – 15 Brice Dulin, 14 Joe Rokocoko, 13 Johan Goosen, 12 Alexandre Dumoulin, 11 Juan Imhoff, 10 Dan Carter, 9 Maxime Machenaud, 8 Chris Masoe, 7 Bernard Le Roux, 6 Wenceslas Lauret, 5 Francois van der Merwe, 4 Luke Charteris, 3 Ben Tameifuna, 2 Virgile Lacombe, 1 Eddy Ben Arous
Subs: 16 Camille Chat, 17 Khatchik Vartanov, 18 Luc Ducalcon, 19 Manuel Carizza, 20 Antonie Claassen, 21 Mike Phillips, 22 Rémi Talès, 23 Louis Dupichot
Photo: Malcolm Couzens/Getty Images