A second-half penalty by Scott Sinclair sealed a 2-0 win for champions Celtic over bitter rivals Rangers and a place in the Scottish Cup final on Sunday.
Sinclair's penalty and a first-half effort by Callum McGregor set them up with a May 27 date with Aberdeen -- who beat holders Hibs 3-2 on Saturday -- and a potential domestic treble for the first time in 16 years.
McGregor and Sinclair's goals avenged defeat at the hands of Rangers at the same stage last year and extended their unbeaten run to 41 domestic matches this season.
It brings to an end a 92-year Hampden Park hoodoo for Celtic, who failed to beat Rangers in the last four of the competition on their previous five attempts since their last victory at this stage in 1925.
Celtic manager Brendan Rodgers said his side were a joy to watch.
"Everything you would want from your team to play in terms of composure, temperament and technical quality," purred Rodgers.
"We restricted Rangers to very few opportunities and the only disappointment was we didn't score more."
His Rangers counterpart Pedro Caixinha felt his side showed Celtic too much respect in the first half.
"At half-time we tried to change some things but I think we needed to be more aggressive in defending," he said.
"I think they deserved to win but we could have done, and should have done, much better."
Rangers kicked off at Hampden but it was to be the closest they were to the ball for the majority of the half.
Rangers had conceded just once in their previous five games, but with Celtic enjoying the lion's share of possession a goal seemed inevitable and it duly came through McGregor.
Moussa Dembele brought down Mikel Lustig's long ball over the top of the Rangers defence and laid it back into the path of the Scottish midfielder, whose first-time strike with his left-foot rolled into the bottom corner.
Rangers were then relieved to see Dembele, scorer of five goals in five Old Firm appearances, limp out of the game on the half hour with a pulled hamstring to be replaced by Leigh Griffiths.
Rangers made two changes at the break with Joe Garner and Andy Halliday making way for Joe Dodoo and Barrie McKay.
But just as they started to threaten they conceded a penalty from a quick Celtic breakaway.
Goalkeeper Wes Foderingham hesitated in coming to collect Kieran Tierney's through ball allowing Griffiths to run in on goal and the striker was brought down by a horribly mistimed sliding challenge from James Tavernier.
Foderingham nearly made amends as he palmed Sinclair's spot-kick on to the inside of the post but the ball bounced over the line to double Celtic's advantage.
Celtic then had two chances in quick succession with Foderingham tipping over a fierce strike from Griffiths before Dedryck Boyata headed over from close range.
Despite Celtic's dominance Rangers captain Kenny Miller was presented with a golden chance to pull one back when he got on the end of Tavernier's cross, but sent his weak header straight at Craig Gordon.