Match ends, Celtic 2, Rangers 0.
Celtic beat Rangers at Hampden to set up a Scottish Cup final against 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.
- History beckons for Celtic - Rodgers
- 'Rangers gave Celtic too much respect'
- Celtic-Rangers - player rater
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 sent off 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 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.
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-attack 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.
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 for 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.
- 5SimunovicBooked at 78mins
- 42McGregorSubstituted forRogicat 75'minutesBooked at 88mins
- 27RobertsSubstituted forForrestat 82'minutes
- 10DembeleSubstituted forGriffithsat 34'minutes
- 2TavernierBooked at 50mins
- 61BeermanBooked at 36mins
- 20HyndmanSubstituted forWindassat 70'minutes
- 16HallidayBooked at 4minsSubstituted forMcKayat 45'minutes
- 7GarnerSubstituted forDodooat 45'minutes
- William Collum
- Shots on Target
Second Half ends, Celtic 2, Rangers 0.
Corner, Rangers. Conceded by Craig Gordon.
Attempt saved. Joseph Dodoo (Rangers) right footed shot from outside the box is saved in the top right corner.
Tomas Rogic (Celtic) hits the left post with a right footed shot from outside the box.
Leigh Griffiths (Celtic) wins a free kick on the right wing.
Foul by Josh Windass (Rangers).
Corner, Celtic. Conceded by Myles Beerman.
Tomas Rogic (Celtic) is shown the yellow card for a bad foul.
Foul by Tomas Rogic (Celtic).
Jason Holt (Rangers) wins a free kick in the attacking half.
Attempt missed. Martyn Waghorn (Rangers) header from the left side of the box is close, but misses the top right corner.
Corner, Rangers. Conceded by Dedryck Boyata.
Substitution, Celtic. James Forrest replaces Patrick Roberts.
Danny Wilson (Rangers) wins a free kick in the attacking half.
Foul by Leigh Griffiths (Celtic).
Attempt saved. Kenny Miller (Rangers) right footed shot from outside the box is saved in the bottom right corner.
Jozo Simunovic (Celtic) is shown the yellow card for a bad foul.
Barrie McKay (Rangers) wins a free kick in the defensive half.
Foul by Jozo Simunovic (Celtic).