Frank Ross returned to the team following his loan spell at Morton, but Seb Ross missed out through injury.
Aberdeen made the early running and a wonderful crossfield pass from Dean Campbell picked out Chris Antoniazzi. The winger cut inside and fired a left-footed effort just over. Miko Virtanen was next to threaten when he got his head on to a Frank Ross corner, but he couldn't get over the ball and it flew too high.
On eight minutes a powerful Welsh header after a corner kick was knocked off his own line by the alert Sam Roscoe. Caffrey then tried his luck from distance but David Craddock saved comfortably.
For an end of season game, the match was being played at a good tempo. A darting run from Ethan Ross created a shooting chance for Bruce Anderson but his effort was blocked as the Celtic defence closed ranks.
The wee man needed treatment after taking a blow to the head from Duffy after a clumsy challenge, but the ref decided it was accidental and took no action against the Celtic man.
However, Duffy did get booked in the 23rd minute after another foul on Ethan Ross.
A powerful drive from McInroy tested Craddock on 29 minutes, but the keeper grabbed the ball gratefully at the second attempt with Aitchison in close attendance. A swift break from the visitors almost saw Aitchison break clear but a great interception from Roscoe averted the danger.
Church came within a whisker of giving Celtic the lead on 31 minutes when his left-foot piledriver crashed off Craddock's right post and rebounded to safety.
It was proving to be a hard-fought and exciting but even tussle as both sides strived for the upper hand.
A long ball from Danny Harvie almost sent Anderson clear but Willison was alert and raced off his line to grab the ball just in front of the advancing striker. Good interplay between Aitchison and McInroy saw the latter fire in a decent effort with his left foot, but Craddock made the save look easy. The Irish goalkeeper has had a fine season for the Dons.
A driving run from Ryan Harrington put the Dons on the offensive as the clock ran down towards half time but the cross from Harvie was cleared comfortably by the visiting defence.
An entertaining first half between two committed sides but no goals as yet for a sizeable crowd to cheer.
Half time Aberdeen 0 Celtic 0
Both teams made changes at the break, Max Barry coming on for Dean Campbell in the home ranks while Celtic brought on Karamoko Dembele in place of Henderson. The tiny Celtic winger was immediately into the action winning a free kick twenty yards out. McInroy's effort was high and wide.
Ethan Ross found space on the left to deliver a teasing cross which Anderson headed narrowly wide. Determined play in midfield from Miko Virtanen saw him charge the ball down into the path of Anderson but the striker's snapshot sailed wide.
Barry saw a shot charged down after good work from Ethan Ross before Dembele fired into the side net under pressure from Lloyd Robertson.
Play was now raging from end to end and both keepers made great saves to prevent first Bell then Anderson from opening the scoring. Harvie forced a good save from Willison before Roscoe was yellow carded for preventing the keeper from clearing the ball.
On 61 minutes, Anderson was withdrawn by Paul Sheerin and David Dangana took the striker's position.
As the game went into its final quarter it remained finely poised with neither side able to find the killer touch in front of goal despite some good build up play.
Potter replaced Caffrey in the Celtic ranks on 69 minutes, but it was Aberdeen who should have taken the lead two minutes later when Dangana dummied an Ethan Ross cross to give Barry a six- yard shot at goal but the youngster blazed high over. A real chance missed.
Celtic threatened again through Aitchison but a superb block from Harvie prevented him testing Craddock. Celtic made their final change on 77 minutes as Diver took the place of Welsh, but the sub was no sooner on the field than the deadlock was finally broken. David Dangana was the Dons hero as he raced on to a through ball to slam the ball past Willison from eight yards. A cool finish from David as he notched his fifth goal of the season.
Danny Harvie was booked for a foul on 82 minutes as Celtic pushed for an equaliser before Kevin Hanratty came on for Antoniazzi.
Celtic piled on the pressure but Sam Roscoe and Lloyd Robertson were standing strong in the heart of the home defence. Craddock saved well from Dembele as the clock ticked towards ninety minutes, but he was helpless when substitute Diver fired the ball in from twelve yards to restore parity for Celtic.
A disappointing end as it looked like the Dons would hold on to complete the League double against the Hoops, but they have the consolation of finishing fourth in the table after a very consistent season.