Celtic were twice pegged back by Hearts in a dramatic 3-3 Scottish Cup final before Conor Hazard was the shootout hero to seal an historic quadruple treble.
Neil Lennon's side were under pressure heading into the Hampden Park showpiece but flew into a 2-0 lead with a dominant first-half performance.
Ryan Christie (19) opened things up superbly before Odsonne Edouard (29) doubled from the spot after Christophe Berra was penalised for handball.
But the second half saw a marked change in Celtic, sparked by Liam Boyce's (48) early strike to pull a goal back for Hearts before Stephen Kingsley's low header was confirmed to be over the line by Hawkeye technology as Robbie Neilson's battling side levelled things up.
- How the teams lined up | Match stats
- Download the Sky Sports Scores App: Apple | Android
- The UK's No 1 scores app: Find out more
It sent the game into extra time, and Celtic thought they had won it when Leigh Griffiths (105+1) poked home in the final moments of the first added period. Hearts were not beaten though as the lively Josh Ginnelly (111) atoned for earlier misses by pumping the ball home and taking the dramatic tie to penalties.
Craig Gordon - who left Celtic in the summer - lined up against his former side and gave Hearts the advantage when he saved from Christie. But it was 22-year-old Hazard, making only his third Celtic appearance, who denied Kingsley and Craig Wighton to become Celtic's new hero, with Kristoffer Ajer scoring the winning penalty.
Despite toiling for much of the game, Celtic have now won a 12th successive trophy and rounded off an unprecedented quadruple treble, with the 2019/20 Scottish Cup victory the last needed to complete last season's domestic set.
Celtic taken all the way by battling Hearts
Hearts had an early sight of goal as they started well. Andy Irving sent a free-kick into the area, which was helped on its way by Berra. It looked destined for the bottom corner but Hazard was down low to make the save. Soon after, Steven Naismith almost caught the Celtic defence out as he poked the ball past the oncoming Hazard, but it rolled wide of the post.
Almost immediately after, Celtic had their first sight of goal. After Hearts cleared a free-kick, the loose ball landed to David Turnbull on the right flank. He did a few keep ups before volleying a cross into the area, which flew over Shane Duffy's head and past Christopher Jullien's outstretched foot.
Celtic: Hazard (7), Ajer (7), Jullien (6), Duffy (5), Christie (7), McGregor (7), Brown (7), Taylor (7), Turnbull (7), Edouard (7), Elyounoussi (7).
Subs used: Rogic (6), Frimpong (5), Laxalt (6), Johnston (6), Griffiths (6), Soro (n/a).
Hearts: Gordon (7), Smith (7), White (7), Berra (7), Walker (6), Boyce (7), Naismith (7), Halliday (7), Irving (7), Kingsley (7), Halkett (6).
Subs used: Ginnelly (8), Wighton (7), Lee (7), Haring (6), Frear (n/a).
Man of the match: Josh Ginnelly.
But Celtic did take the lead a few minutes later in spectacular style. Ajer's attempted chip was nodded away by Aidy White into Christie's path. He controlled the ball perfectly on the turn before thundering a wonderful effort past his former team-mate Gordon.
Just before the half an hour mark, Celtic were awarded a penalty. Berra was penalised for handball after Duffy's header from a corner hit him on his raised hand as the Hearts defender also tried to win the ball. The penalty was dispatched coolly by Edouard, sending an audacious Panenka past the goalkeeper to double Celtic's lead.
- Celtic skipper Scott Brown had been an unused substitute for the previous two games, but returned to the line-up on Sunday. Ismaila Soro dropped out along with Jeremie Frimpong, while Ryan Christie returned to the XI.
- Hearts made one change from last weekend’s 6-1 victory against Queen of the South. Olly Lee dropped out with Andy Halliday coming back into the XI.
But from then on, Celtic were in constant danger of letting the quadruple treble slip from their grasp, which began three minutes after the break when Hearts hit back. White produced a superb run down the left flank, but was sent over by Ajer as he made his way into the area. Andy Halliday picked up the loose ball, working himself into an area to cross, which was expertly headed home by Boyce in the middle after peeling away from Duffy.
Celtic had a few half chances, but it was Hearts who should have levelled things up on the hour mark. It was some comical defending from Jullien and Duffy as they bundled into one another trying to clear a simple ball. It then landed to the lurking Ginnelly, who drove into the area and it took a superb save from Hazard to deny him an equaliser.
But the Hearts leveller did come in the most dramatic of fashions. The Edinburgh side had a succession of corners, with Ginnelly's delivery lifting over the melee over players in the middle. It reached Kingsley at the back post, who stooped low to nod the ball over the line before Christie hacked it away. The shouts went up from Hearts and after a few seconds, goal line technology confirmed the ball had gone all the way over for the equaliser.
Celtic settled afterwards but did not have many sights of goal. Ginnelly could twice have won it late on for Hearts, but sent both effort flying well into the Hampden Park stands to send the game to extra time for the first time since 2006.
There were few clear-cut chances in the first period of extra time, but Celtic provided another twist in the tale when they went back ahead on the stroke of the break. Christie curled a corner into the area, with Scott Brown's header saved well by the feet of Gordon. But Griffiths was lurking inside the six-yard box to send the ball high into the net.
But of course, there was more to come as Hearts once again came from behind to level things up. Olly Lee curled a free-kick into the area, which bounced off Hazard and Peter Haring in the middle of the six-yard box. Kingsley then nodded the ball back across - once again lurking at the near post - with Ginnelly atoning for some misses at the end of normal time by turning home.
Penalties seemed a fitting way to end a dramatic affair and the shootout mirrored the 120 minutes of action. Gordon saved from Christie to hand Hearts the advantage, but two wonderful stops from Hazard to deny Kingsley and Wighton put Celtic on the brink of a historic victory. It was up to Ajer to slot home the resulting penalty, which he did superbly to secure Celtic's 12th successive domestic title.
Man of the match - Josh Ginnelly
It was an impressive performance from the Hearts winger, who helped turn the game in his team's favour with his 57th-minute introduction. The Edinburgh side were already in the ascendancy and he slotted in wonderfully.
Like many players from both sides, he can be found guilty of some poor finishing. He should have really taken advantage of some slapstick defending from Celtic and missed two gilt-edged chances late in normal time.
But he finally scored his goal to bring Hearts level once again and it was a superb finish. Credit too must also go to Kinsgley for setting him up as well as equalising himself.
Celtic are back in Scottish Premiership action on Wednesday when they host Ross County; kick-off 6pm. They then travel to Hamilton on Boxing Day, live on Sky Sports; kick-off 3pm. Hearts are also next in action on Boxing Day when they host Ayr in the Scottish Championship; kick-off 3pm.