St Johnstone’s discipline proved no match for Rangers’ ruthlessness as the Perth side were downed at Ibrox.
Despite starting well against the Gers, Callum Davidson’s men found themselves two goals behind at half-time thanks to a pair of superb strikes from the home side.
Borna Barisic put Rangers ahead on 21 minutes with a perfectly placed free-kick after Saints’ David Wotherspoon felled Alfredo Morelos just outside the box.
The Perth outfit, who welcomed Craig Conway into their starting line-up in place of the suspended Michael O’Halloran, had marshalled the Gers well in the early stages.
In fact Callum Hendry might have put Saints ahead just five minutes in after latching onto a beautifully threaded Wotherspoon though ball, turning Leon Balogun inside out and firing an effort goalward.
Unfortunately for Saints, Jon McLaughlin got down to make a fantastic save low to his right.
Rangers had found it difficult to break their opponents down but, with half-time just seconds away, they found a way to stretch their lead when Ryan Kent fired Barisic’s tailor made cross past Elliot Parish.
It was a sucker punch for Saints, whose discipline deserved better.
Within three minutes of the restart, Rangers claimed a three-goal cushion when Joe Aribo was first to James Tavernier’s near post corner.
In the aftermath, with substitutions galore taking place, Saints enjoyed a brief flurry, with on-loan striker Isaac Olaofe in the thick of things.
The Millwall man could have snatched a consolation goal late on but could only direct a header straight at McLaughlin from point blank range.
In the end, Rangers – now top of the Premiership – were comfortable victors, with Saints left to refocus on Saturday’s clash with Kilmarnock.
St Johnstone (5-4-1): Parish (GK), McNamara, Kerr, Gordon, McCart, Booth (Tanser 76), Conway (Olaofe 63), McCann, Craig (Rooney 63), Wotherspoon, Hendry (Robertson 76).
Subs not used: Duffy, Ballantyne, Sinclair.
Rangers (4-2-3-1): McLaughlin (GK), Tavernier, Goldson, Balogun (Helander 45), Barisic, Kamara, Jack (Roofe 61), Aribo (Arfield 61), Hagi, Kent (Davis 60), Morelos (Itten 61).
Subs not used: Bassey, Firth, Patterson, Barker.