Nigel Hasselbaink netted the opener against his former side after 22 minutes when he collected Murray Davidson’s flick-on and slotted the ball under Craig Samson.
Davidson added a second nine minutes before the break when Samson could only parry out Chris Millar’s low cross, allowing the midfielder the easiest of finishes from six yards.
St Mirren responded three minutes into the second half through Lewis Guy but though they dominated the majority of the second half, the hosts claimed all three points.
The visitors enjoyed much of the possession in the opening stages and Kenny McLean’s low cross on five minutes caused unrest amongst the St Johnstone back line.
McLean was involved again one minute later as he flashed a shot just wide of the target after combining with Sam Parkin.
Jim Goodwin received the first booking of the match after 10 minutes when he carelessly bundled over Gregory Tade – his fifth yellow card in the league this season.
The hosts passed up a good opportunity to open the scoring on the 20-minute mark when Chris Millar’s goal-bound shot was brilliantly blocked by Paul Dummett, following an excellent weaving run by Hasselbaink.
St Johnstone were to find themselves in front two minutes later when Murray Davidson knocked on David Mackay’s though-ball and Hasselbaink coolly slotted the ball under Craig Samson.
Alan Mannus in the home goal had enjoyed a quiet opening to the game, but he almost cost his side a goal when his poor clearance landed at the feet of Graham Carey who fired a shot goalwards – the keeper did redeem himself though, diving full length and keeping the ball out with his chest.
After failing to capitalise on their chance to level proceedings, St Mirren fell 2-0 behind on 36 minutes. Samson could only parry Millar’s low cross into the path of Davidson, who was on hand to slide the ball home from six yards.
On the stroke of half-time Steven Thompson headed just over from McLean’s corner, ending a frustrating opening 45 minutes for Danny Lennon’s side.
Lennon introduced Dougie Imrie in place of Parkin at half-time in an attempt to help his side find a way back into the match and they took only three minutes to reduce the deficit.
Dummett’s ended a powerful run with a low delivery across the six-yard box and Thompson controlled the ball before Guy prodded beyond Mannus from close range.
Following their goal, St Mirren opted for a more direct approach and a number of high balls were causing problems for the home defence.
On the hour mark, Fraser Wright’s clearing header dropped to Imrie who forced Mannus into a good stop to prevent his effort from finding the right-hand corner of the goal.
The St Mirren players appealed for a penalty after 74 minutes when Wright appeared to haul down Guy inside the area, but Alan Muir wasted little time in waving play on.
Thomas Reilly replaced McLean with 15 minutes remaining and Steve Lomas responded by making a change of his own – David Robertson replacing the impressive Hasselbaink.
Lennon made his final change as Jon Robertson was introduced for Guy, though chances remained at a premium.
Imrie’s cross was comfortably handled by Mannus and Davidson made a crucial block to divert Goodwin’s shot away for a corner.
Craig Beattie was brought on in the closing minutes for Tade, as St Johnstone looked to hold on during the three minutes of injury time.
Samson joined the St Mirren attack for Imrie’s corner in the final minute, but to the delight of the home supporters Mannus gathered and ensured a hard-fought victory for Lomas’ side.