Celtic now look destined to retain the Scottish Premiership title after crushing Rangers' hopes with a thrilling derby victory.
Kyogo Furuhashi netted either side of James Tavernier's sumptuous free-kick at a raucous Celtic Park devoid of away supporters, before Jota rolled in the hosts' third.
Tavernier headed his 100th Rangers goal to set up a nervy finale, with the Rangers captain nodding inches wide moments later, but Celtic held on to go 12 points clear with seven games left.
With their vastly superior goal difference, it means a maximum of three more wins will ensure Celtic the trophy, while Rangers manager Michael Beale is left to lick his wounds after suffering the first league defeat of his tenure.
Both sides came into this combustible fixture in rampant form but missing totemic figures through injury. Celtic had to do without midfielder Reo Hatate, while the absence of Connor Goldson - who notched a double when Rangers last won at Celtic Park in October 2020 - meant a first start since July for John Souttar.
The Scotland international and fellow centre-back Ben Davies were both culpable of glaring second-half errors seized upon by Celtic to ultimately emerge triumphant.
Rangers knew this game was their last hope of reviving already slender title hopes and they set about their task with relish, putting Celtic's defence ill at ease in the opening skirmishes with a high press.
Controversy is never far from this derby and sure enough it reared its head when Alfredo Morelos poked in Borna Barisic's corner with a first-time finish, only to be penalised for a push on Alistair Johnston. The visitors were incensed, 60,000 home fans heaved a sigh of relief.
Celtic, having also had an opener disallowed when Kyogo was offside when finishing off a sumptuous Johnston pass, roused themselves and surged ahead.
Callum McGregor and Jota had tested Allan McGregor before Kyogo swivelled and lashed past the Rangers goalkeeper's grasp after being picked out by Matt O'Riley's cutback.
Rangers were rocking on their heels - Jota threatened a second with a swerving drive from distance that stung McGregor's palms - but went up the tunnel level thanks to an exquisite equaliser.
Tavernier's 25-yard free-kick was top drawer and arrowed into the top corner, kissing the bar on its way past the despairing dive of Joe Hart.
Rangers looked to keep up the momentum and Morelos was thwarted by Hart after a rare slip by the impressive Johnston, then had a header blocked and Todd Cantwell drilled wide.
But Beale's side were architects of their own downfall at the other end, and Celtic's second was a personal nightmare for Davies. Having cut out Jota's cross, the defender tried to keep the ball in play on the byeline but succeeded only in knocking it off Jota and into the path of Kyogo, who gobbled up the gift by smashing past McGregor from an acute angle.
Davies rallied by making a last-ditch block to prevent Kyogo pulling the trigger, but Celtic extended their lead with what proved to be the decisive goal. Jota nipped in to steal Souttar's blind passback to McGregor and roll the ball into the net to spark bedlam in the stands.
Tavernier popped up the back post to head in Borna Barisic's cross, but his landmark goal had a hollow ring as Rangers failed to find a leveller.
Celtic substitute Alexandro Bernabei ought to have calmed the home nerves when he burst through one on one, and there was one final scare when Barisic lined up a free-kick on the edge of Celtic's box but sent it too high with the last kick of a high-octane derby.
Player of the match - Kyogo Furuhashi
Celtic's talisman again delivered on the big occasion, taking his tally for the season to 28 goals and also having a strike disallowedMore to follow.
Line-ups
Celtic
Formation 4-3-3
1Hart
2Johnston20Carter-Vickers4Starfelt3Taylor
13Mooy42McGregor33O'Riley
17Neves Filipe8Furuhashi38Maeda
1Hart2Johnston20Carter-VickersBooked at 8mins4Starfelt3Taylor13MooyBooked at 47minsSubstituted forIwataat 61'minutes42McGregorBooked at 39mins33O'RileyBooked at 44minsSubstituted forOhat 75'minutes17Neves FilipeSubstituted forHaksabanovicat 75'minutes8FuruhashiSubstituted forTurnbullat 85'minutes38MaedaSubstituted forBernabeiat 86'minutesSubstitutes
9Haksabanovic14Turnbull18Kobayashi19Oh24Iwata25Bernabei29Bain57Welsh69VataRangers
Formation 4-2-3-1
1McGregor
2Tavernier16Souttar26Davies31Barisic
8Jack43Raskin
13Cantwell71Tillman14Kent
20Morelos
1McGregor2Tavernier16Souttar26Davies31Barisic8JackSubstituted forLundstramat 86'minutes43RaskinBooked at 39mins13CantwellBooked at 45minsSubstituted forWrightat 86'minutes71TillmanSubstituted forSakalaat 69'minutes14Kent20MorelosSubstituted forColakat 86'minutesSubstitutes
3Yilmaz4Lundstram7Hagi9Colak18Kamara23Wright30Sakala33McLaughlin37ArfieldLive Text
Match ends, Celtic 3, Rangers 2.
Second Half ends, Celtic 3, Rangers 2.
Attempt missed. Borna Barisic (Rangers) left footed shot from outside the box is too high from a direct free kick.
Foul by Oh Hyeon-Gyu (Celtic).
Ryan Kent (Rangers) wins a free kick in the attacking half.
Foul by Tomoki Iwata (Celtic).
Nicolas Raskin (Rangers) wins a free kick in the attacking half.
Corner, Celtic. Conceded by John Lundstram.
Offside, Celtic. Alexandro Bernabei tries a through ball, but David Turnbull is caught offside.
Sead Haksabanovic (Celtic) wins a free kick on the left wing.
Foul by Ryan Kent (Rangers).
Offside, Rangers. Nicolas Raskin tries a through ball, but Fashion Sakala is caught offside.
Foul by Oh Hyeon-Gyu (Celtic).
John Souttar (Rangers) wins a free kick in the defensive half.
Foul by David Turnbull (Celtic).
Ryan Kent (Rangers) wins a free kick on the right wing.
Substitution, Rangers. Antonio-Mirko Colak replaces Alfredo Morelos.
Substitution, Rangers. Scott Wright replaces Todd Cantwell.
Substitution, Rangers. John Lundstram replaces Ryan Jack.
Substitution, Celtic. Alexandro Bernabei replaces Daizen Maeda.
helpHow to play
Rate players out of 10 throughout or after the game. The rater will close 30 minutes after the final whistle.
Rating range key1 = Give it up10 = Pure perfection
Celtic
Squad number1Player nameHart
Squad number2Player nameJohnston
Squad number20Player nameCarter-Vickers
Squad number4Player nameStarfelt
Squad number3Player nameTaylor
Squad number13Player nameMooy
Squad number42Player nameMcGregor
Squad number33Player nameO'Riley
Squad number17Player nameJota
Squad number8Player nameFuruhashi
Squad number38Player nameMaeda
Squad number9Player nameHaksabanovic
Squad number14Player nameTurnbull
Squad number19Player nameOh Hyeon-Gyu
Squad number24Player nameIwata
Squad number25Player nameBernabei
Rangers
Squad number1Player nameMcGregor
Squad number2Player nameTavernier
Squad number16Player nameSouttar
Squad number26Player nameDavies
Squad number31Player nameBarisic
Squad number8Player nameJack
Squad number43Player nameRaskin
Squad number13Player nameCantwell
Squad number71Player nameTillman
Squad number14Player nameKent
Squad number20Player nameMorelos
Squad number4Player nameLundstram
Squad number9Player nameColak
Squad number23Player nameWright
Squad number30Player nameSakala