January signing Mohamed Diomande scored his first goal for the club from long range towards the end of the first half, before captain James Tavernier converted two penalties in the space of seven second-half minutes to help the Gers claim three crucial points.
Philippe Clement's side entered the contest sitting in second place and only one point behind leaders Celtic following their surprise 1-1 draw at home to Kilmarnock on Saturday - their second draw in three league matches.
Rangers have capitalised on the Hoops' dip in form and have extended their winning run in the top flight to seven matches, with their latest success moving them two points clear at the summit.
St Johnstone, meanwhile, have now lost back-to-back league games under Craig Levein and remain 10th in the table, five points above the bottom two, although 11th-placed Ross County have a game in hand.
First-half chances were at a premium, but January signing Diomande provided a moment of magic for Rangers in the 37th minute when he rolled the ball from left to right before smashing a 25-yard strike beyond Dimitar Mitov into the bottom corner - the midfielder's first goal in just his third league appearance for the club.
Rangers had every right to feel confident of securing maximum points considering they had not lost any of their last 84 Premiership matches when leading at half time prior to their latest visit to Perth.
The Gers made an electric start to the second half and came close to doubling their advantage, but Fabio Silva's sweeping volley was saved well by Mitov before substitute Dujon Sterling glanced a close-range header narrowly wide.
St Johnstone offered very little going forward as they were penned in their own half for much of the contest by a dominant Rangers outfit, who were awarded a penalty 15 minutes from time following a VAR review after Sterling was brought down by a late challenge from Andy Considine.
On-field referee Matthew MacDermid initially waved away Rangers' appeals, but he changed his mind after taking a look at the incident at the pitchside monitor; Tavernier eventually stepped up and slotted his effort from 12 yards to the left of Mitov with aplomb.
Rangers should have added a third just a few minutes later when Cyriel Dessers burst through on goal, but he was nudged off balance by St Johnstone's Liam Gordon as he attempted to round the goalkeeper.
Dessers then clipped the crossbar with a looping header from close range, before Rangers were awarded another penalty thanks to a VAR review after Tom Lawrence's strike hit the outstretched arm of Luke Robinson.
Tavernier stepped up again and this time smashed his effort into the top-left corner, tucking away his 10th goal against St Johnstone and his 19th of the season in all competitions to put the game to bed three minutes from time.
Rangers can extend their lead at the Premiership summit to five points if they beat Hearts at Ibrox next Saturday, a day before Celtic travel to Fir Park to face Motherwell.