Aberdeen launched a raid and, when Tzanko Tzvetanov's cross was only half cleared, Eoin Jess' shot from the edge of the box was deflected for a corner.
But St Johnstone launched a swift counter attack and took a 19th-minute lead.
Paul Kane's cross was laid off by McMahon inside the box and O'Boyle fired past Leighton from 10 yards.
At the other end, Jess tried an acrobatic overhead kick but was well wide of the mark.
Aberdeen saw their best chance of the half go begging in the 28th minute.
Kiriakov's cross was taken down by Dean Windass and the striker turned his defender before rifling in a 25-yarder which keeper Alan Main did well to tip over the bar.
With St Johnstone back on the attack and looking for a second, Dons keeper Leighton did well to rush to the edge of the box and collect the through ball with Roddy Grant in close attendance.
HT Aberdeen 0 St Johnstone 1
Dons boss Alex Miller quoted earlier this week "another performance like the one against Hibs last week will not be tolerated" and he would have been extremely disappointed at his side's failure to get an equaliser.
Saints kept possession superbly, and Aberdeen saw very little of the ball.
Aberdeen made the first substitution of the match with Billy Dodds replacing Miller before the restart.
St Johnstone's good form of the first half deserted them and Aberdeen passed up a couple of decent chances to get the equaliser. A short pass back by St Johnstone's Alan Kernaghan on 58 minutes allowed Eoin Jess ro rush in but keeper Alan Main did well to hold at the near post.
Aberdeen then made their second substitution in 59 minutes with Newcastle-bound Stephen Glass replacing Tzventanov.
Weather: Heavy rain and icy wind