A flat afternoon that looked destined for stalemate pretty much from the off was stolen by the Saints with a late winner as the Dons drew a blank in front of goal.
Stephen Glass made three changes to the side defeated at Motherwell last Saturday, Austin Samuels returning after injury, Jay Emmanuel-Thomas recalled to the starting XI and David Bates getting a full Aberdeen debut. Declan Gallagher and Matty Longstaff dropped to the bench, Marley Watkins missing out altogether with injury. Tom Ritchie replaced the injured Gary Woods as substitute goalkeeper. Niall McGinn returned amongst the subs in place of Connor McLennan.
St. Johnstone, still without a win in the league this term, made four changes from the team that lost 2-1 at home to Rangers last Saturday. In came Efe Ambrose, Callum Booth, Murray Davidson and Glenn Middleton, replacing Hayden Muller, Liam Craig, Ali Crawford and Reece Devine, who all dropped to the bench.
The Dons were a whisker away from a third minute opener, Lewis Ferguson flighting the ball in from the left, both Christian Ramirez and Emmanuel-Thomas close to getting a decisive touch as the ball drifted behind.
O'Halloran was in the book on eight minutes, catching Ross McCrorie with a stray elbow as the two chased a ball over the top. The defender required lengthy treatment to a mouth wound before continuing.
The sides were effectively cancelling each other out in a mundane opening quarter of the game. Ojo was the next needing treatment on 23 minutes, Davidson's studs catching him on the knee as the two stretched into a challenge.
Width looked to be the answer for the Dons and on 27 minutes, Samuels received the ball down the left before slinging in a dangerous looking cross that unfortunately found no takers in the middle.
The home side won a first corner on the left after 29 minutes. Calvin Ramsay produced a fine delivery to the back post where Ramirez was left all alone, but he got his angles all wrong and put the header well wide of goal. Emmanuel-Thomas was yellow carded for a foul just inside the Aberdeen half a couple of minutes later. Jason Brown followed him into the book on 35 minutes after slicing through Ramirez.
Samuels had the first shot in anger on 36 minutes, coming inside before firing off a shot from 25 yards. It took a deflection off Davidson and looped up safely into Clark's arms.
Saints responded and on 41 minutes, Booth wrapped his right foot around the ball from the right corner of the Aberdeen box. Fortunately, it curled just wide of the far post.
Diagonal balls from Brown out to Samuels were starting to cause the visitors trouble and that helped win a free-kick on 44 minutes, but the cross into the box wouldn't quite fall for Bates.
HALF-TIME: ABERDEEN 0 ST JOHNSTONE 0
Samuels was the threat at the start of the second half, collecting a pass from Emmanuel-Thomas and firing in a low shot that Clark saved comfortably at his near post on 53 minutes.
Moments later, a Mackenzie cross flashed through the six yard box without anyone on the end of it, though it wouldn't have counted with the offside flag going up. The Dons were knocking on the door now and a looping header from Emmanuel-Thomas was clutched under the bar by Clark on 55. Davidson was carded after going through the back of Ferguson a minute later.
Jonny Hayes replaced Samuels on the hour, the visitors withdrawing O'Halloran for Crawford. Following a half cleared free-kick, Middleton took a swing from the edge of the year. He didn't catch it cleanly but Joe Lewis still had to scramble to push it around the post after 65 minutes. Saints were much more in the game now, Middleton all alone to nudge the ball into the back of the net moments later, but thankfully, up went the linesman's flag.
McGinn became Aberdeen's second switch, replacing Emmanuel-Thomas on 66 minutes. The Dons threatened two minutes later, a dangerous cross in from McCrorie headed wide at the back post by Ferguson. Former Don Stevie May then replaced Middleton on 69 minutes.
Wotherspoon had a glorious opportunity with 20 minutes to go, albeit from distance. He was given all the time in the world to get off a shot from 25 yards but he pulled his effort wide of the goal. Aberdeen responded, Hayes floating a ball into the box, Brown defending well to get a crucial touch on the ball just ahead of Ramirez.
Teddy Jenks very nearly came on for Funso Ojo on 73 minutes, only for Bates to signal to the bench and call a halt to the move before limping off with injury, to be replaced by Gallagher. Saints made their final change on 81 minutes, Kane making way for Vertainen.
A hopeful ball forward from Booth fell kindly for May on 84 minutes. Bringing it forward, he cut inside Ramsay and Gallagher before firing off a low, bobbling shot that snuck just inside the post from the edge of the box to put the Saints ahead.
Aberdeen were back on the attack, winning an 87th minute corner, Ramsay's delivery headed over the bar by Gallagher. Davidson took a whack in the process and hobbled off to leave the Saints down to ten men.
Another Aberdeen corner two minutes into added time was cleared, McGinn working the ball back in, McCart heading over his own bar, somehow winning a free-kick for his team in the process.
Mackenzie tried to manufacture an opening with a fierce cross from the left, Hayes leaping to get on the end of it, but he was underneath his header that flashed over the bar, the last act of a desperately disappointing afternoon.