Leinster are back in the Heineken Champions Cup final after a comprehensive victory over Toulouse at the Aviva.
Beaten finalists last season, Leo Cullen's men will face the winner of defending champions La Rochelle and Exeter, who meet on Sunday afternoon, in the final back at the Aviva Stadium on 20 May.
The semi-final match-up was a repeat of the sides' meeting 12 months ago and while the scoreline was similar, Toulouse remained close until the final quarter when their indiscipline eventually caught up with them.
They had two players yellow-carded, one in each half, and in the 20 minutes that they had 14 on the field, Leinster hit them for 28 points.
Jack Conan (2), Dan Sheehan, Josh van der Flier and Jason Jenkins scored the tries and Ross Byrne kicked 16 points as they lay down another marker in front of 46,823 fans at Lansdowne Road.
Leinster will now aim for that elusive fifth star, which would draw them level with Toulouse.
The hosts lined out without Ireland internationals Johnny Sexton, Robbie Henshaw and James Lowe, but were able to welcome back Josh van der Flier and Ryan Baird, who started on the bench.
Toulouse, meanwhile, arrived with the same starting XV that defeated Sharks in the quarter-finals.
The French outfit got the first and last tries of the half but in between it was the home side who dominated proceedings.
Leinster were able to build up a 13-point half-time advantage on the back of good discipline, smart kicking and clever running lines, the strings being pulled by the superb Jamison Gibson-Park. The scrum-half was named player of the match.
Toulouse didn't help themselves and conceded six penalties and had Thomas Ramos sin-binned in the 16th minute.
After the lively Charlie Ngatai led a breakout from deep, the Toulouse defence infringed and Byrne kicked Leinster ahead in the fifth minute.
However a brilliant 50:22 kick by Ramos handed the visitors position to grab the opening try; former Connacht player Pita Ahki finishing off a move after Jack Willis and Cyril Baille had stretched the Blues' defence.
Byrne replied with his second penalty before Wayne Barnes sent Ramos off for 10 minutes after an unlikely interception attempt out wide.
TRY LEINSTER
— RTÉ Rugby (@RTErugby) April 29, 2023
25mins LEIN 20-7 TLS
A yellow card for Thomas Ramos and Leinster take immediate advantage as Jack Conan goes over for his side's first try of the game. Conan would add another minutes later as the home side power clear midway through the half. pic.twitter.com/SYP43XjO0C
Leinster immediately moved up a gear and Conan was on hand to barge over after a lineout maul in the 17th minute.
The Wicklow man doubled up just four minutes later after Gibson-Park and Van der Flier set up the number 8, who sold a dummy before touching down.
And when replacement scrum-half Paul Graou flung the ball off Willis' chest, it rebounded straight into the hands of Sheehan who made for the corner, showing Ramos a clean pair of heels.
Byrne converted all three tries and Ugo Mola's side, for whom Antoine Dupont played a roaming midfield role, standing as an auxiliary out-half, looked shook.
HT LEIN 27-14 TLS
— RTÉ Rugby (@RTErugby) April 29, 2023
Three tries in the first half puts Leinster in control of this European semi-final at the Aviva Stadium. Dan Sheehan was gifted the third due to a wayward pass and a very fortunate ricochet. Toulouse still looking dangerous in attack with two fine tries. pic.twitter.com/3Tb4nIuuKF
They did, however, have the last say of the half. Emmanuel Meafou stretched over after a quick tap penalty. Ramos converted and replays showed that Andrew Porter was lucky not to come to the attention of the officials for a tip-tackle on Juan Cruz Mallia in the build-up.
Leinster looked to hit back just before the break but conceded a penalty inside the 22 and the Top14 leaders cleared.
The rain that had hung in the air all afternoon arrived at the start of the second half and Toulouse burst out of the blocks, fully aware that the first score of the half was crucial.
But as the ball turned greasy, both sides began to kick hoping to tease a mistake out of their opponents. A Leinster scrum turned into a Toulouse penalty and Ramos struck the ball over to make it 27-17 in the 56th minute.
Toulouse are reduced to 14 once again as Rodrigue Neti is shown a yellow card for some illegal use of the head.
— RTÉ Rugby (@RTErugby) April 29, 2023
📺 https://t.co/CStwnXf2cB
📱 https://t.co/V5tPTz20or
📻 https://t.co/wUq1XxhF4x pic.twitter.com/ikRsB1yprM
Rodrigue Neti, standing at the front of a ruck then bucked his head into Van der Flier, who had run in to contest and lay still on the ground momentarily.
"Not a clear deliberate act," said Barnes, who yellow-carded the France loosehead as Leinster kicked to the corner.
James Ryan claimed the lineout and Van der Flier, the tournament's top try-scorer with six, was on hand to dot down as the maul collapsed over the line with 22 minutes left on the clock. Byrne converted.
TRY LEINSTER
— RTÉ Rugby (@RTErugby) April 29, 2023
Josh van der Flier with Leinster's fourth try of the game as Leo Cullen’s side put one foot in this year’s final.
📺 https://t.co/CStwnXf2cB
📱 https://t.co/V5tPTz20or
📻 https://t.co/wUq1XxhF4x pic.twitter.com/G9Y5DmdYFR
Toulouse shoulders' slumped and more indiscipline led to another Leinster lineout and Jason Jenkins dived over after a couple of phases.
Byrne's seventh successful kick from seven brought his tally to 16 and it was just a matter of seeing out the clock.
Deep in overtime, Willis pushed his way over to put a gloss on the scoreboard but it couldn't take the shine of an excellent Leinster performance.
Leinster: Hugo Keenan; Jordan Larmour, Garry Ringrose, Charlie Ngatai, Jimmy O'Brien; Ross Byrne, Jamison Gibson-Park; Andrew Porter, Dan Sheehan, Tadhg Furlong; Ross Molony, James Ryan; Caelan Doris, Josh van der Flier, Jack Conan.
Replacements: John McKee, Cian Healy, Michael Ala'alatoa, Jason Jenkins, Ryan Baird, Luke McGrath, Harry Byrne, Ciarán Frawley.
Toulouse: Thomas Ramos; Juan Cruz Mallia, Pierre-Louis Barassi, Pita Ahki, Matthis Lebel; Romain Ntamack, Antoine Dupont (capt); Cyril Baille, Péato Mauvaka, Dorian Aldegheri; Richie Arnold, Emmanuel Meafou; Jack Willis, Thibaud Flament, Francois Cros.
Replacements: Julian Marchand, Rodrigue Neti, David Ainu'u, Alexandre Roumat, Rynhardt Elstadt, Alban Placines, Paul Graou, Arthur Retiere.
Referee: Wayne Barnes (RFU).