The Gers fell behind to an early goal before Florian Kamberi’s half-time introduction looked to have swung the game in the Light Blues’ favour.
The on-loan Hibs star scored a screamer before setting up Joe Aribo to make it 2-1 and put the Gers in front in the final stages.
With three points looking comfortable, Stevie May popped up to score from a corner as the hopes of a title win this season looked over.
Attention will now turn to Wednesday’s Europa League clash with Braga – but this could just prove to be the weekend where stopping Celtic winning the title becomes little more than next year’s ambition.
Here’s how Rangers performed in the McDiarmid Park clash:
Allan McGregor – 6
Could maybe have done better for the Saints first goal but little wrong all afternoon.
James Tavernier – 6
Tried to get up the right but crosses nowhere near accurate enough – until the one that found Kamberi. Needs to be tighter defensively. Let St. Johnstone’s wide players have too much time.
Connor Goldson – 5
Bit of a nightmare early on before finding his feet before the break. Quickly reverted to bombscare Goldson after the interval as Rangers threw a lead away.
Niko Katic – 4
Shambles at the goals and made a number of mistakes. Will be a surprise if he keeps his place when Helander returns, based on recent performances.
Andy Halliday – 5
In the side for the injured Barisic but didn’t offer enough going forward. Replaced at half-time.
Ryan Jack – 6
Back in after missing the Braga win through suspension, first-half strike forced an important save but struggled to take control of the game.
Scott Arfield – 6
Lots of endeavour but not enough end product from the midfielder. Far too many passes didn’t find the destination. Covered plenty of ground to offer an option for others
Joe Aribo – 7
Tried to make things happen but not a lot came off for the Nigerian. Moved to left-back for the second half before popping up to score the second goal.
Ryan Kent – 5
Struggled to influence the game early on and really looked out of sorts before growing into it a bit more later on. Doesn’t hide though and always shows for the ball.
Ianis Hagi – 6
Another who took far too long to really get going but showed some great ingenuity at times. Needs to be able to step up in games like this. Decent enough without excelling. Replaced by Stewart
Alfredo Morelos – 6
Barely involved for long spells but had a couple of chances near the break to open the scoring. Replaced by Steven Davis for the final 15 minutes with an eye on Braga as the Colombian serves a ban
Substitutes: Florian Kamberi (8) Replaced Halliday at the break and made an immediate impact and then turned provider for Joe Aribo. Greg Stewart (5) Took over from Hagi after 78 minutes Steven Davis (5) Came on for Morelos for the final 15 minutes.