Alfredo Morelos scored a late winner as Rangers came from behind to beat St Johnstone and move within a point of Scottish Premiership leaders Celtic.
The Colombia striker took his tally for the season to 19 with just two minutes to play, volleying in James Tavernier’s teasing delivery.
It earned Steven Gerrard’s side a fourth win in a row at McDiarmid Park.
Morelos’ downward header from a Glenn Middleton cross had cancelled out Matty Kennedy’s thunderous first-half opener.
This was the first time in six games the Ibrox side had scored more than once, with the second-half introductions of Middleton and Kyle Lafferty swinging the game in Rangers’ favour.
A win would have moved St Johnstone into fifth place, but a second consecutive defeat after an eight-game unbeaten run instead leaves the Perth side eighth.
For all the praise Rangers have received under Gerrard – and having recently topped the table – they arrived in Perth having only won one of their past five games, scoring twice.
A lack of creativity from central midfield has been a problem and, with Ovie Ejaria returning to Liverpool, their resources were further stretched by the absence of Scott Arfield and Ryan Jack. It showed.
St Johnstone manager Tommy Wright decided to crowd that area, with two midfielders starting in place of two forwards and Kennedy playing as a lone striker – hardly surprising considering they had shipped seven goals in their past two games against the visitors.
The plan could have been undone within four minutes had Andy Halliday not side-footed wide after stealing in, and Joe Worrall and Morelos went close as Rangers saw more of the ball.
However, St Johnstone were growing into the game, with Murray Davidson lofting a shot just over, and Liam Craig should have done better than head wide from close range. That swelling confidence was fuelled by the tendency of Rangers’ two centre-backs to cheaply concede possession.