The Irish side, who won their last title in 2018, will face either Racing 92 or La Rochelle, who play on Sunday, in the final in Marseille in two weeks.
Winger James Lowe scored two tries, flanker Josh van der Flier and Hugo Keenan added another with Johnny Sexton and Ross Byrne kicking the rest of the points as Leinster reacted swiftly after Antoine Dupont’s early try.
Dupont intercepted the ball within his 22 metres and raced through the whole field to touch down after seven minutes, but it proved to be little more than a fluke.
Five-time champions Toulouse were no match for Leinster’s power and poise, and Selevasio Tolofua’s try with 15 minutes left only trimmed the deficit, leaving the French side with a mountain to climb.
After eliminating Ulster by one point on aggregate in the last 16 and knocking out Munster on penalties in the quarter-finals, Toulouse could not pull off another miracle and were eliminated after Keenan scored his team’s fourth try in the last minute.