Toulouse (9) 26
Tries: Jauzion, Skrela Cons: Skrela 2 Pens: Clerc 4
Leinster (6) 16
Try: Heaslip Con: Berne Pens: Berne 2, Kearney
Toulouse centre Yannick Jauzion scores his side's first try
Toulouse booked a place in the Heineken Cup final after two second-half tries gave them victory over reigning champions Leinster in France.
The home side took a 9-0 lead with three David Skrela penalties but Leinster battled back to level the tie.
The game opened up after the break and quickfire tries from Yannick Jauzion and Skrela put Toulouse in control.
Jamie Heaslip's try gave Leinster hope but Skrela added another penalty and Toulouse closed the game out.
The victory gives Toulouse a place in their sixth Heineken Cup final and it keeps alive their hopes of winning the competition for a record fourth time.
Leinster centre Brian O'Driscoll contemplates defeat
For Leinster, there is to be no repeat of their triumph of last year after being undone by an impressive forward display from the hosts - who were clinical when they had to be on a rainy day in France.
With the pitch damp and greasy, the opening exchanges were unsurprisingly attritional with the only scores in the opening half coming from the boot - Skrela putting his side ahead on five minutes.
Leinster did have spells of possession but on two occasions when they threatened the Toulouse 22, sloppy knock-ons let them down while Skrela added his second penalty on 16 minutes.
Toulouse's pack were dominant but a mistake from controlling number eight Craig Sowerby almost led to Leinster scoring the first try. His clearance kick went too long and over the dead-ball line which gave the visitors another chance to attack.
Leinster scrum-half Eoin Reddan eventually found a gap in the Toulouse defence but just as he was about to touch down, he spilt the ball with Byron Kelleher and Vincent Clerc double teaming to make the crucial tackle.
The Irish province were made pay for their profligacy and after being penalised as another scrum was obliterated, Skrela made the score 9-0.
Toulouse were seemingly in control and Leinster coach Michael Chieka reacted to his side's troubles at scrum time by bringing on Springbok prop CJ van der Linde for Cian Healy.
But the French side seemed to switch off in the closing stages of the half and on 32 minutes Shaun Berne, in at fly-half after Johnny Sexton was ruled out injured, kicked his side's first points after Kelleher crudely blocked Rob Kearney as he was chasing a high ball.
Skrela missed a penalty soon after, Shane Jennings penalised for throwing Kelleher to the ground, and the French side then paid the price for keeping the ball alive in injury time when they should have kicked it dead.
Hooker Williams Servat was left isolated and was penalised for holding on to the ball and Berne gratefully accepted the gift.
Toulouse livewire Maxime Medard came on for the start of the second period and he almost gave his side an electric start to the half but he could not quite get to a long kick before sliding out of play.
Leinster levelled the score with a massive Kearney penalty from half-way following another Kelleher indiscretion and when Skrela missed another penalty, it seemed as if the tide was turning.
Skrela scored 21 of his side's 26 points
But Toulouse are not three-time champions for nothing and two quickfire tries put them in control.
The first came after Clement Poitrenaud and Clerc combined to put Toulouse on the Leinster line, Jauzion diving over from close range after finding a small gap in the line.
The second try was scored four minutes later. Van der Linde gave away a silly penalty at the breakdown and when the ball was spread wide from the resulting line-out, Skrela produced a sublime step off his left to confuse the Leinster defence which gave him a simple run-in under the posts to make the score 23-9.
Leinster were not going to lie down, however, and Reddan almost finished off a fine attack but a last-gasp tackle stopped the former Wasps man from scoring.
The visitors recycled the ball and after a couple of stabs to try and get over the line around the fringes, Nacewa came in from his wing to fire a perfect long pass out wide to Heaslip for the try in the corner.
Berne landed the conversion from the touchline to put Leinster right back in it but Skrela knocked over his fourth penalty to snuff out the resistance.
Toulouse comfortably closed out the game and they will meet either Munster or Biarritz in the final in Paris on 22 May.
Toulouse coach Guy Noves:
"We are very happy because it was clearly very hard out there.
"We controlled the game for the first 30 minutes then it seemed to slip away but we reacted well in the second half and came back into it.
"I'm proud because this is an immense achievement - this is the sixth time Toulouse have reached the final.
"I'm Biarritz's biggest fan and I hope they have a good match tomorrow so that it will be a magnificent all-French final."
Leinster head coach Michael Cheika:
"We're very disappointed because we felt we had it in us to go two finals in a row, which isn't easy to do.
"We put everything on the line and physically we were good, taking it right to them, but you have to be accurate at this level.
"We knew that we'd be battling good periods of the game when they had a lot of momentum and we had to keep our shape which we did reasonably well.
"But what killed us was the management of our possession. We let ball go too easily and probably kicked it away too much."
Toulouse: Poitrenaud; Clerc, Fritz, Jauzion, Heymans; Skrela, Kelleher; Human, Servat, Lecouls, Millo-Chluski, Albacete, Bouilhou, Dusautoir (capt), Sowerby.
Replacements: Medard for Heymans (41), Elissalde for Skrela (74), Montes for Human (71), Lacombe for Servat (75), Poux for Lecouls (44), Maestri for Millo-Chluski (57), Picamoles for Sowerby (72).
Not Used: David.
Leinster: Kearney; Horgan, O'Driscoll, D'Arcy, Nacewa; Berne, Reddan; Healy, Fogarty, Wright, Cullen (capt), Hines, McLaughlin, Jennings, Heaslip.
Replacements: Van der Linde for C Healy (31), O'Kelly for McLaughlin (66), S Keogh for Jennings (52), Ross for Van der Linde (75).
Not Used: Jackman, O'Donohoe, O'Malley, Dempsey.
Ref: Nigel Owens (WRFU).