There was just the one change for the Dons from the side that drew 0-0 with Ross County on Monday, Graeme Shinnie straight into the side following his loan move from Wigan Athletic. Christian Ramirez started from the bench.
After losing 1-0 to Dundee United on Monday, St Johnstone made three changes. Andrew Considine returned from illness - and to Pittodrie - and Anthony Gallacher and Cameron MacPherson also came in, replacing Daniel Phillips, Nicky Clark and James Brown who were all among the substitutes.
Bojan Miovski had a chance to open the scoring on three minutes. From Liam Scales' pass, a little backheel from Leighton Clarkson inside the defender had Miovski in behind but with the goalkeeper to beat, he made a weak connection that allowed Matthews to save.
Miovski was on the chase again five minutes later, Matthews quickly off his line to beat him to the ball as Scales clipped a probing pass forward. Duk was next to threaten, heading just wide at the back post from Ross McCrorie's hoisted cross.
A dozen minutes in there was a free-kick for the Dons some 30 yards out. From a similar position to the one he took in the dying seconds at Kilmarnock, Matty Kennedy's effort went just wide of the post.
The visitors had their first real opening on 18 minutes, May getting up at the near post to glance a header wide of goal.
Aberdeen should have been ahead on 20 minutes. Anthony Stewart was up well at the back post for a Kennedy corner. Heading it into the ground and back across goal, it popped up nicely for Scales six yards out, but he didn't get a great connection on the header and it was ultimately cleared by Considine.
Carey was yellow carded for clipping Shinnie from behind on 21 minutes. From the free-kick, it looked as though the Dons were ahead at last. Played in from wide on the left touchline by Clarkson, Duk rolled away from the defender and clipped his left footed shot through Matthews and inside the far corner. VAR looked at it again and disallowed the goal - the evidence was far from conclusive though.
McCrorie was posing problems for St Johnstone down the right and on 32 minutes, his deep cross found Clarkson, but the Liverpool loanee couldn't get enough on his shot to trouble Matthews.
Miovski was sent away on the run on 38 minutes, Stewart's long ball causing trouble at the back. Mitchell tried to head the ball back to his goalkeeper but Miovski was able to intercept, his flick at goal not quite high enough to get over Matthews.
It was a similar situation three minutes later, this time from Kelle Roos' long kick out. It skimmed off Gordon's head as he tried to clear it, leaving Miovski through on goal, but his low shot was well saved by Matthews - another golden chance spurned.
There were calls for a penalty in added time as Miovski and Considine tangled but there was no VAR intervention this time.
HALF-TIME: ABERDEEN 0 ST JOHNSTONE 0
St Johnstone started the second half well, and had a great chance to score on 51, Murphy blazing over the bar when threaded through by Wright, but he blazed over the bar from close range - VAR would surely have shown him as offside in any case. From a corner three minutes later, May glanced a header over the bar at the near post.
Ylber Ramadani got the Dons moving again on 56 minutes, drilling a shot at goal after a corner was half cleared, the ball flashing just wide via deflection off Miovski.
Aberdeen made a couple of changes on the hour, Jonny Hayes and Vicente Besuijen replacing Miovski and Kennedy. MacPherson was booked moments later for pulling back Ramadani.
McCrorie went on a mazy run on 63 minutes before feeding Duk, his shot flying over the bar from 25 yards. Mitchell was booked for a foul on Besuijen, thigh the referee should have played an advantage first. Murphy was replaced by Wotherspoon on 66 minutes, as the visitors continued to break up the play.
The Aberdeen goal finally came on 74 minutes and it was Duk who got it - no questions this time. From a goal kick, Roos launched the ball forward, Clarkson, Duk and Besuijen all chasing it down and putting the defenders under pressure on the edge of the box. The ball dropped nicely from the scramble for Besuijen and he played a clever pass into Duk to ram the ball in from a dozen yards out.
Clark came on for Gordon on 76 minutes at St Johnstone looked to chase the game. Bair and Crawford joined the fray five minutes later in place of May and MacPherson.
They had no time to make a difference before Duk doubled the lead on 84, Besuijen's shot earning a corner. The Dons scored from it as Hayes picked him out on the edge of the six-yard box. From a standing start, Duk produced a good leap to get on the end of it and glance his header into the bottom corner.
Ramirez and Ryan Duncan replaced Clarkson and Duk in the 87th minute, just after Clark had blazed the ball over from the edge of the six-yard box, a big opportunity to get the visitors back in the game. Shinnie was replaced by Connor Barron after a tireless display as the game edged into stoppage time, the standing ovation he received replicated a few moments later as the final whistle sounded.