Perpignan's Manny Edmonds catches a high ball at Lansdowne
Leinster 14-21 Perpignan
The 2003 Heineken Cup final will be an all-French affair following Perpignan's surprise win at Lansdowne Road on Sunday.
The Catalan outfit will play Toulouse at the same Dublin venue in the 24 May decider.
The result was a huge disappointment for off-form Leinster who, like their French opponents, were trying to reach their first final.
The Irish province led 11-6 heading into the final quarter after a try by wing Gordon D'Arcy in the 58th minute.
But Perpignan winger Pascal Bomati collected a chip over the defence to level with a try seven minutes later.
Manny Edmonds saw his conversion attempt come back off a post but the fly-half swiftly landed a penalty to put the French club 14-11 ahead.
Leinster 14 (3):
Pens: O'Meara 2, Spooner
Perpignan 21 (0):
Tries: Bomati, Dal Maso
Drops: Cermeno, Edmonds
And Leinster's European dream was all but dashed when 36-year-old replacement hooker Marc Dal Maso was driven over for Perpignan's second try two minutes from time.
Edmonds converted to put the visitors 10 points up only for
Nathan Spooner - on for the injured Brian O'Driscoll - to land an injury-time penalty for the Irish side.
We picked the biggest day of the year to play our worst rugby - the way we played we didn't deserve to win.
Leinster coach Matt Williams
But despite throwing everything at Perpignan in the final three minutes, they could not force the try they needed to take the game into extra-time.
The first half had been a hugely disappointing affair, ending with Leinster 3-0 ahead after scrum-half Brian O'Meara landed just one of his five penalty attempts.
Early in the second period, wing Frederic Cermeno - impressive throughout - landed a superb drop goal to bring Perpignan level.
O'Meara edged Leinster back in front with a simple penalty in front of the posts, only for Edmonds to reply with another thumping drop goal from just inside the Leinster half.
D'Arcy's try was the highlight for Leinster
When D'Arcy profited from Denis Hickie's pace and vision to go over in the right corner it appeared Leinster would go on to justify their pre-match favouritism.
But Perpignan had other ideas to become the first French side ever to win a Heineken Cup knock-out match in Ireland.
Leinster: G Dempsey; D Hickie, B O'Driscoll, D Quinlan, G D'Arcy; C Warner, B O'Meara; R Corrigan (capt), S Byrne, E Byrne, L Cullen, M O'Kelly, E Miller, K Gleeson, V Costello.
Replacements: Treston, G Hickie, Kearney, McCullen, O'Riordan, Spooner, McKenna.
Perpignan: J-M Souverbie; P Bomati, P Giordani, C Manas, F Cermeno; M Edmonds, L Loustau; N Mas, M Konieckiewicz, S de Besombes, J Thion, R Alvarez Kairelis, G le Corvec, B Goutta, P Murphy.
Replacements: Dal Maso, Moreno, Porcu, Daniell, Mallier, Basset, Laharrague.
Referee: N Williams (Wales)