Lewis Ferguson’s penalty earned Aberdeen a 3-3 draw with Celtic as Neil Lennon’s side slipped six points behind Scottish Premiership leaders Rangers.
Ryan Hedges bundled in Aberdeen’s second but Leigh Griffiths rifled home to make it 2-2.
Ryan Christie’s penalty put Celtic ahead for the first time but Ferguson levelled in an enthralling finale.
The two sides meet again in next Sunday’s rearranged Scottish Cup semi-final from the 2019-20 campaign.
Celtic have a game in hand over Rangers, who beat Livingston later on Sunday, while Aberdeen – who beat Hamilton in midweek – are a point behind third-placed Hibernian.
In wet and windy conditions that did not lend themselves to flowing football, Aberdeen’s players claimed unsuccessfully for an early penalty after Ross McCrorie’s header connected with Diego Laxalt’s shoulder.
Olivier Ntcham flashed a long-range effort just past Aberdeen goalkeeper Joe Lewis’ left-hand post before the hosts’ Dylan McGeouch picked up a knock and was replaced by Connor McLennan.
Celtic were dominant in possession for most of the first half but were unable to convert that into chances, and when Ferguson was bundled over after getting the wrong side of Ntcham in the box, the hosts were given the chance to take a lead into half-time.
Scott Bain had replaced Vasilis Barkas in goal for Celtic and the Scotland man went right as Ferguson drove left to register Aberdeen’s 16th successful penalty in a row.
The home team will have expected a response from the champions and it came early in the second period as McGregor, the Celtic captain with Scott Brown on the bench, took matters into his own hands.
The midfielder started the move from deep, slipped the ball to Tom Rogic, received the return pass and stepped away from his defender before finishing with a low drive.
The Dons lost Marley Watkins and Ryan Edmondson to knocks while Scott Wright and Sam Cosgrove came on to give the hosts new impetus in attack.
It proved vital as Cosgrove held off Shane Duffy to turn and shoot in the box with Hedges on hand for the rebound after Bain had blocked.
Brown and Griffiths took over from Ntcham and Albian Ajeti and the Scotland striker received Rogic’s pass inside the box to fire in Celtic’s second equaliser, his rising shot flying past the helpless Lewis.
Celtic could smell victory and Mohamed Elyounoussi got to Kristoffer Ajer’s cross just before Tommie Hoban and was brought down, giving Christie the chance to stroke the ball in from 12 yards.
But the drama was not over as Hedges squared for McLennan, who was tripped by McGregor, and although Cosgrove fired the loose ball against the bar, referee Willie Collum brought play back for the foul.
Ferguson stepped up again and scored his third goal of the week to give Aberdeen a point.
Man of the match – Ryan Hedges
What did we learn?
Substitutions proved key at Pittodrie with the return of Cosgrove – making his first appearance of the season after a knee injury – proving timely for Aberdeen’s second goal and in preparation for next week’s semi-final.
Griffiths again staked his claim to start with his second goal as a substitute this season. In Odsonne Edouard’s absence, that is a huge boost for Lennon.
Celtic had switched from three at the back to four during their midweek defeat by AC Milan and continued with the latter at Pittodrie.
But the defence continually struggled to cope with Aberdeen when Derek McInnes’ side got into the final third, as the loss of two penalties demonstrated. Lennon’s side have now conceded eight goals in three games, having lost to Rangers last weekend.
What did they say?
Aberdeen manager Derek McInnes: “I’m just glad we got something out of it because it was no more than we deserved. We said at half-time we know Celtic won’t lie down. I’m disappointed with a couple of the goals.
“The penalty decisions, the referee got them all right. Big decisions he got right. The players never gave it up and they deserve wholeheartedly their point.”
Celtic manager Neil Lennon: “I’m disappointed we haven’t won it. Defensively it’s poor from our point of view. We can’t accept the goals that we’re giving away at the minute. It’s too sloppy.