Biarritz (3) 18
Pens: Yachvili 6
Munster (7) 7
Try: Earls Con: O'Gara
Imanol Harinordoquy is about to get the ball away despite Liefemi Mafi's best efforts in San Sebastian
Biarritz set up an all-French Heineken Cup final against Toulouse after Dimitri Yachvili's six penalties saw off Munster in San Sebastian.
Munster started brightly and Keith Earls' try helped the Irish side take a 7-0 lead by the 28th minute.
However, Yachvili's penalties on either side of half-time cut Munster's lead to only a point.
Biarritz's pack dominated the remainder of the contest as scrum-half Yachvili kicked four more penalties.
Biarritz, minus captain Damien Traille but with number eight Imanol Harinordoquy lining out wearing a protective mask after breaking his nose like weekend, made a nervous start as their scrum creaked under some early Munster pressure.
A day after Leinster's defeat by Toulouse, Munster were without their injured talisman Paul O'Connell, with Mick O'Driscoll partnering Donncha O'Callaghan at lock.
Big hits were a feature of the opening exchanges as both defences snuffed out any threats.
The first serious attack didn't come until the 19th minute when Jerry Flannery strode unchallenged deep into the Biarritz '22 but with the line seemingly gaping, O'Gara was unable to hold the hooker's pass.
But Munster were ahead nine minutes later as Jean de Villers' steal and O'Callaghan's burst set up Earls to score, with O'Gara adding the extras.
Ayoola Erinle gathers possession in front of Munster's Alan Quinlan
Biarritz went close to responding almost immediately but Benoit August was shoved into touch by a combination of Mick O'Driscoll and Denis Hurley.
However, Biarritz did get points on the board before the break as Yachvili slotted a routine penalty.
Flannery's trip on Karmichael Hunt gifted three more points to Biarritz four minutes into the second half as the Munster scrum began to struggle.
O'Gara was short with a penalty attempt from halfway on 56 minutes but Biarritz were producing all the attacking play.
Munster coach Tony McGahan tried to arrest the problems in the scrum by introducing Tony Buckley for John Hayes but the Irish province needed Tomas O'Leary to produce desperate defending to prevent an Iain Balshaw try.
Biarritz were ahead on 65 minutes as Yachvili kicked three more points after Paul Warwick's ill-advised attempt to run from his own '22.
The French team's lead became five points on 72 minutes after Yachvili punished yet another Munster indiscretion near their own posts.
Yachvili put more than a converted try between the teams three minutes from time and for good measure, added another three points in the closing seconds to complete an impeccable day with the boot.
Munster coach Tony McGahan:
"Biarritz played very cleverly in the second half. Their set-piece was excellent and they kicked to the corners very well
"They put us under a tremendous amount of pressure and shut up shop.
"We tried to defend our way back into their half which didn't give us any platform whatsoever.
"Our set-piece was a concern all afternoon. They dominated that area of the game and we had no platform to play off at all."
Biarritz scrum-half Dimitri Yachvili
"This is very emotional - we left everything out there.
"I am very proud we'll be able to take everyone up to Paris for the final.
"We were in a bit of bother in the first half - but we realised that our mental strength, solidity and team spirit could get us through and we proved our mettle."
Biarritz: Balshaw, Ngwenya, Mignardi, Erinle, Gobelet, Hunt, Yachvili; Coetzee, August, Johnstone, Thion (capt), Hall, Lund, Lauret, Harinordoquy.
Replacements: Peyrelongue for Erinle 47, Bidabe for Gobelet 77, Barcella for Coetzee 59, Terrain for August 78, Carizza for Hall 67, Faure for Harinordoquy 66.
Not Used: Hughes, Courrent.
Munster: Warwick, Mafi, Earls, De Villiers, Hurley, O'Gara (capt), O'Leary; Horan, Flannery, Hayes, O'Callaghan, O'Driscoll, Quinlan, Wallace, Coughlan
Replacements: Deasy for D Hurley 76, Stringer for O'Leary 75, Brugnaut for Horan 72, Varley for Flannery 78, Buckley for Hayes 57, Ronan for Quinlan 75, Williams for Coughlan 63.
Not Used: Gleeson.
Referee: Dave Pearson (England)