Saracens took another giant stride towards a possible domestic and European double as they booked their place in next month's Champions Cup final by beating Wasps 24-17 at the Madejski Stadium.
The Aviva Premiership leaders were tested physically by a resilient Wasps side, but flanker Michael Rhodes' first-half score, which was followed by a penalty try that Owen Farrell converted as part of a 14-point haul, proved enough.
Wasps led through an early Dan Robson try and substitute hooker Ashley Johnson touched down late on, with fly-half Jimmy Gopperth kicking both conversions and a penalty - but Saracens dominated possession and territory and were worthy winners.
The reigning English champions will meet Leicester or sole French survivors Racing 92 - they clash in Nottingham on Sunday - in Lyon on May 14.
Saracens, who were contesting their fourth successive European semi-final, showed one change from the side that knocked out Northampton a fortnight ago, with blindside flanker Rhodes replacing Jackson Wray.
Wasps, meanwhile, were minus two of the forwards that started an epic quarter-final victory over Exeter. Prop Jake Cooper-Woolley and lock Kearnan Myall were both sidelined by injury, which meant call-ups for Lorenzo Cittadini and Bradley Davies as their respective replacements.
Wasps went into battle as outsiders, but they required just 73 seconds to make an impact as they stunned Saracens with a blistering opening score.
Wing Christian Wade, Premiership record-equalling six try star of last weekend's win at Worcester, barely needed sight of an outside gap before breaking clear and finding Robson in support, who finished superbly.
Gopperth's conversion took Wasps seven points clear, and although Saracens then enjoyed a period of territorial dominance, their chance of early points disappeared when Farrell rifled a straightforward penalty kick wide and Wasps cleared the danger.
Saracens continued to press, though, and they looked to have cashed in when Chris Ashton and his Wasps opposite number Frank Halai chased a loose ball, before possession squirmed clear and Saracens centre Duncan Taylor touched down.
But referee Romain Poite referred to television replays, with the decision made after lengthy deliberation that Ashton had nudged Halai illegally, and Wasps gained a penalty that Gopperth cleared to touch.
Saracens, having dominated the opening half territorially, then struck in opportunist fashion when Gopperth - final kick hero of the win against Exeter - turned villain as his attempted defensive clearance was charged down by Rhodes, who claimed the touchdown.
Farrell again drifted a kick wide, though, and Wasps entered the closing 10 minutes of a fast and furious half holding on to a 7-5 advantage.
But Saracens went ahead for the first time in injury time when Farrell landed his first successful kick at the fourth attempt, giving them an 8-7 advantage.
Farrell, who had struggled for accuracy off the tee during a tense opening 40 minutes, made amends through two long-range strikes in three minutes at the start of a second period that meant his team moved seven points clear.
Wasps had shown little since their opening burst, and they suffered a 51st-minute blow when Robson was carried off following Farrell's tackle that meant the England centre was yellow-carded, but Gopperth kicked a penalty from the restart and Saracens' lead was cut to four points.
Farrell's return 10 minutes later coincided with an immediate penalty chance, but he sent his kick wide, and Wasps remained firmly in contention entering the final quarter.
The game remained an attritional contest, but Saracens extended their lead when Farrell landed a fourth penalty after replacement Wasps prop Simon McIntyre was sin-binned following a kick aimed at Saracens' England lock Maro Itoje.
A penalty try then followed, which sealed the deal from Saracens' perspective, and although Johnson crossed during the dying seconds, it made no difference to the overall picture as Saracens marched on.