Celtic beat Rangers at Hampden to set up a Scottish Cup final meeting with Aberdeen and the chance to complete a domestic treble.
Callum McGregor's superbly placed finish put the Premiership champions ahead during a dominant first half from Brendan Rodgers' side.
Scott Sinclair squeezed in a penalty after Rangers' James Tavernier had fouled Leigh Griffiths.
Goalkeeper Craig Gordon twice denied Kenny Miller in Rangers' best attacks.
But the Ibrox side could not prevent the first defeat of Pedro Caixinha's reign as manager and must now focus on securing European qualification through the league.
Celtic have already won that tournament and the League Cup and will face the Dons back at the national stadium on 27 May - the second Aberdeen-Celtic cup final this season - hoping to complete the domestic clean sweep for the first time since 2001.
This was a difficult day for Rangers, but one can only speculate as to how much sorer it might have been had Andy Halliday been punished to the max after lunging in on Patrick Roberts early on. The Rangers midfielder took Roberts out and was fortunate to see yellow instead of red.
Quickly, Celtic took hold of things and their greater intensity, accuracy and quality paid off with the opener. Mikael Lustig hit a long downfield ball over Danny Wilson's head and into Moussa Dembele, who took it down, looked around him and saw McGregor steaming forward untracked.
The Frenchman played it to McGregor, who stroked it coolly into the corner of Wes Foderingham's net.
Celtic were dominant but their mission was not helped when they lost Dembele to a hamstring injury just before the half-hour. Griffiths came on.
Rangers had been fortunate to escape a dismissal earlier with Halliday and were lucky again when Myles Beerman, already on a yellow for fouling Roberts, impeded him again a minute later.
Beerman survived, but it was not long before Rangers' hopes of a cup final appearance were extinguished.
Pedro Caixinha made two substitutions at the break - Joe Dodoo coming on for the peripheral Joe Garner and Barrie McKay replacing Halliday - but no sooner had those changes bedded in than Celtic hit their opponents on the counter and smoothed their passage to the final.
It was Dedryck Boyata who broke up a Rangers attack and got his team on the front foot. Roberts took it on and put Griffiths into the box, where he was taken down by Tavernier. The spot-kick from Sinclair found the target via Foderingham's diving hands and then the inside of his right-hand post.
There could have been more. Foderingham tipped over Griffiths' shot, Boyata headed over and Roberts had one saved. Celtic then lost their edge and Rangers got on top and started creating chances - good ones.Miller had a frustrating day at the national stadium
Just after the hour, Miller had a close-range header saved by Gordon. The striker might have done a whole lot better.
Then, with 10 minutes left, he had another opportunity - a point-blank shot kicked away by Gordon. Again, it was the type of opening that Rangers had to convert.
Martyn Waghorn headed over from a good position, Dodoo forced a diving save from Gordon and, at the other end, McGregor's replacement Tom Rogic hit a post for Celtic.
Those late chances will give Rangers hope ahead of their Old Firm league meeting at Ibrox on Saturday, but Celtic's victory was well earned and their treble dream remains very firmly on track.