The game was barely five minutes old when the hosts took the lead as Maurice Edu shot towards goal, but Peter Enckelman in the St Johnstone goal couldn’t hold on to the shot leaving Nikica Jelavic to pounce on the rebound.
David Healy forced Enckelman into an impressive save in the 21st minute as Kyle Lafferty found Jelavic before the Croatian found Healy who got a low shot in, but Enckelman was equal to it.
The Finnish keeper couldn’t do much about the second Rangers goal however as Lafferty headed home a Gregg Wylde corner from just six yards out.
The visitors did have a chance just a couple minutes later as captain Jody Morris shot, but Allan McGregor in the Rangers goal pulled off a great save to deny Morris what would’ve been a good goal.
Just a minute later the visitors went close again as Jamaican Cleveland Taylor put the ball just wide from 18 yards, the two chances represented a good opportunity to pull a goal back before half time, but it wasn’t to be.
St Johnstone had a decent chance in the 58th minute as Murray Davidson went close but his shot could only find the side netting.
However, the hosts well and truly sealed the three points in the 78th minute as Sasa Papac received a Jelavic backheel 12 yards out before slotting home.
Just moments later Rangers felt they should have had a penalty as Enckelman appeared to foul John Fleck in the penalty area, however the visitors managed to escape the situation without conceding a penalty and with 11 men still on the pitch.
The hosts added a fourth for good measure in stoppage time as Richard Foster found Fleck, who picked out Wylde before setting up Jelavic who finished off a good move as Rangers moved within five points of leaders Celtic, whilst also having two games in hand on their fierce rivals.