The Perth side had lost their three previous meetings with Kilmarnock but had the upper hand here.
Killie’s misery was compounded in stoppage time when full-back Luke Hendrie was booked for a tussle with Graham Cummins, who received the same sanction, and then seconds later received a second yellow card for dissent when ordered to take a throw-in deeper inside his own half.
This was Kilmarnock’s 2,000th home game in the league and they came close to marking the occasion with a goal in the third minute.
Rory McKenzie’s low drive from the edge of the penalty area should have been comfortably gathered by Zander Clark but he fumbled it behind his right-hand post.
The home side believed they ought to have had a penalty when Nathan Tyson went to ground under pressure from Saints defender Steven Anderson but referee Stephen Finnie was unimpressed.
Tommy Wright’s side gradually established a foothold in the contest and finally threatened in the 21st minute.
A firm downward header by Murray Davidson from Danny Swanson’s corner looked a certain goal but McKenzie was alert to the danger and made a vital intervention on the goal line. However, the influential midfielder was forced off just after the half hour with a hamstring injury.
Saints opened the scoring two minutes from the interval with a well-rehearsed and well-executed goal.
Blair Alston’s corner was chipped towards Davidson and this time there was no-one on the line to keep out his sidefooted shot from 12 yards.
Souleymane Coulibaly had an opportunity to restore parity five minutes after the restart when he was brought down by Richard Foster 25 yards out. However, he failed to add to his collection of spectacular goals from the resulting free-kick, which Clark saved with ease.
David Wotherspoon earned the first caution of the evening for a cynical foul on Jordan Jones but Killie struggled to get behind their opponents’ rearguard.
Kris Boyd, out of action for two months with a thigh injury, replaced Tyson as Killie manager Lee Clark attempted a more direct approach.
Coulibaly looked a more likely scorer, though, and was denied by a fine save by Clark, whose dive stopped a 35-yard free-kick.
Yet it required an outstanding reflex save from Jamie MacDonald – who stuck out a hand to parry substitute Graham Cummins’ close-range header from Wotherspoon’s deep cross and then blocked the striker’s attempt from the rebound – to keep Kilmarnock in it.
He saved them again when he threw himself to his left to beat away Brian Easton’s attempt from distance.
The home fans made their displeasure clear as Saints forced their favourites on to the back foot and substitute Liam Craig was unfortunate to see his shot from the edge of the penalty area beat the goalkeeper but rebound to safety off his left-hand post.
St Johnstone have conceded only seven goals in nine away fixtures this season and they never looked like being breached as they ran down the clock.