Tom Rogic netted an injury time winner as Aberdeen’s hopes of denying Celtic a domestic treble ended in disappointment.
The Dons made a dream start with Jonny Hayes opening the scoring after only nine minutes but Celtic drew level through Stuart Armstrong two minutes later.
The Reds, bidding for a first Scottish Cup win since 1990, enjoyed the better of the first half but were unable to net a second before the break.
Celtic improved after the interval but the Dons looked to have held out for extra time until substitute Rogic struck the decisive goal in the second minute of injury time to earn Celtic a first treble since 2001 and an unbeaten domestic treble.
Aberdeen manager Derek McInnes made four changes to the side that defeated Partick Thistle 6-0. Jayden Stockley replaced top scorer Adam Rooney in the most surprising decision with the departing Ryan Jack, stripped of the captaincy earlier in the week, starting ahead of Anthony O’Connor.
New club captain Graeme Shinnie and Niall McGinn also returned in place of the ineligible Ryan Christie while Scott Wright dropped to the bench despite netting a hat-trick against the Jags last week.
The Dons finished 30 points behind Celtic in the league and had lost all five meetings with the Hoops this season but McInnes was adamant his side could succeed in front of a packed national stadium.
Leigh Griffiths maintained his place in the Celtic attack with Frenchman Moussa Dembele only fit enough for a place on the bench.
The game kicked off following a minute’s silence to remember the victims of the Manchester terror attack.
Torrential rain prior to kick-off ensured it was going to be a difficult afternoon for both goalkeepers.
The 20,000 Aberdeen supporters provided plenty of noise and colour to proceedings but it was Celtic who threatened first with Callum McGregor volleying over from the edge of the area.
But the Dons had settled well and broke the deadlock after only nine minutes.
It was a goal that came straight from the training ground with a deep corner from McGinn falling perfectly for Hayes to smash the ball home.
Celtic equalised only two minutes later when Dons defender Shay Logan was slow to close down Armstrong on the edge of the penalty area and he drilled beyond Joe Lewis.
Two shots on targets, two goals and the atmosphere inside the national stadium was electric.
Aberdeen continued to look dangerous in the final third with Shinnie firing into the side-netting soon after as the Dons searched for a second.
There was a lengthy stoppage in play soon after when Kieran Tierney received treatment after being elbowed by Stockley with the Celtic left back replaced by Tom Rogic with 26 minutes on the clock.
The Dons almost profited while Celtic were trying to reorganise their back line with McGinn and Jack both testing Craig Gordon from distance.
They went even closer after 33 minutes when Stockley rose highest in a packed penalty area to nod a McGinn corner goalwards but again Gordon was well placed.
The Dons were nullifying Celtic’s attacking threat, although Griffiths went close with a powerful free kick a minute before the break.
And the Hoops should have netted in the fifth minute of stoppage time when Scott Sinclair blasted over from two yards out following an enticing delivery from Griffiths.
The pressure on the Aberdeen defence continued after the break with Ash Taylor deflecting a Griffiths attempt just wide before the Dons went close at the other end when Stockley and Andy Considine were unable to convert from a delicious Kenny McLean cross.
The pace of play at the start of the second half was relentless with Aberdeen goalkeeper Lewis producing an excellent stop to thwart Sinclair.
The Dons were guilty of passing up a glorious opportunity in the 53rd minute when Hayes pounced on a Callum McGregor error but he was unable to pick out the unmarked Kenny McLean who would have had a simple finish.
Celtic were inches away from taking the lead in the 64th minute when Patrick Roberts jinked past two Dons players before unleashing a curling effort that was superbly tipped on to the post by Lewis.
The Dons had another lucky escape with just under 20 minutes to go when the unmarked Dedryck Boyata headed over from a Griffiths corner.
Lewis made two fine stops to deny Griffiths and then Sinclair as the Hoops ramped up the pressure.
But the Hoops would have the final say deep in injury time when Rogic darted past O’Connor and Considine before netting from an acute angle.