Alfredo Morelos scored his 100th goal for Rangers on his 199th appearance
Alfredo Morelos scored his 100th Rangers goal as the Scottish Premiership champions roared back from behind to beat St Mirren in Paisley.
Steven Gerrard's side returned to the top of the table, but initially trailed after Connor Ronan's stunning strike gave St Mirren a shock lead.
Kemar Roofe levelled with a 42nd-minute penalty after Ianis Hagi was tripped.
And just moments later Morelos headed home to spark wild celebrations for the goal that would prove the winner.
The victory moves Rangers three points above Hearts, who dropped points on Saturday at home to Dundee.
St Mirren, who were targeting a place in the top six, remain seventh as their three-game winning streak came to a halt.
And there was a further blow with Republic of Ireland midfielder Jamie McGrath stretchered off late on.
- Reaction & how it happened
Jim Goodwin had spoken pre-match about the confidence in the home side, but they now had to "show people what they are made of".
It took them just four minutes. Ronan stepped away from John Lundstram, freed up some space and let fly with an unstoppable 30-yard shot that swerved in the wind and nestled into the top corner.
And the Buddies' dominance continued as they knocked the ball around like a side comfortable at the top end of the table.
It took Rangers a quarter of an hour to get to their box and another 10 minutes before their first threat.
Connor Goldson sent two identical headers into the hands of goalkeeper Jak Alnwick and Hagi threatened twice with efforts that were deflected just past both posts.
St Mirren were hanging on, but just as half-time approached the champions stung them twice.
Hagi skipped past Alan Power who caught the winger just inside the box. Alnwick guessed the right way at the spot-kick, but Roofe's strike was hard and low enough to find the bottom right-hand corner.
Just over a minute later, with Saints still reeling, James Tavernier found breathing space down the right, swung a ball into the middle which defender Conor McCarthy missed and Morelos knocked into an empty net.
From being on top, St Mirren were all over the place. Rangers went looking for a third and Hagi had a shot tipped away by the goalkeeper.
Tavernier had an early second-half header saved and Morelos went close again,, but it was a quiet start from both compared to the high tempo the first 45 minutes had served up.
St Mirren then had McGrath taken off on a stretcher, leaving them to play the final 10 minutes with 10 men having used up their substitutes.
Borna Barisic's free-kick was deflected just past a post as Rangers held on, and the closest St Mirren came was a late header wide from a crowded penalty box in added time.
Man of the match - Ianis HagiIanis Hagi, tripped here as Rangers were awarded a penalty, was a constant threat for the visitorsWhat did we learn?
St Mirren began the game at a pace that Rangers couldn't match and, for 25 minutes, they were excellent. But they were undone by slackness at the back and ultimately a nightmare two-minute spell turned the game on its head.
Gerrard has been calling for a 90-minute performance from Rangers and his frustration was evident as they started sluggishly.
But while this season hasn't matched the standards they set last time, they showed they still have the quality to see them through tough fixtures.
What did they say?
St Mirren manager Jim Goodwin: "I thought we were the better team for 25-30 minutes and it was a brilliant goal for Connor Ronan.
"I'm extremely disappointed with the goals we've conceded. The penalty is a bit of a daft one and the second is really poor - it needs to be cut out at the near post."
Rangers manager Steven Gerrard (to Sky Sports): "Pleased with the result but it took us 25 minutes to get going.
"After a game in Europe, away from home, we've got to come out the blocks sharper than we did today. But, you've got to have trust and belief in your players they can turn it around."
St Mirren travel to Motherwell in the Scottish Premiership on Wednesday (19:45 BST), while Rangers are at home to Aberdeen at the same time.
Player of the match
with an average of 6.82
- St MirrenSt MirrenSt MirrenRangersRangersRangers
St MirrenAvgSquad number43Player nameRonanAverage rating
Squad number4Player nameShaughnessyAverage rating
Squad number7Player nameMcGrathAverage rating
Squad number9Player nameBrophyAverage rating
Squad number44Player nameMillarAverage rating
Squad number1Player nameAlnwickAverage rating
Squad number3Player nameTanserAverage rating
Squad number5Player nameMcCarthyAverage rating
Squad number16Player nameErhahonAverage rating
Squad number6Player namePowerAverage rating
Squad number8Player nameFlynnAverage rating
Squad number10Player nameMainAverage rating
Squad number2Player nameTaitAverage rating
Squad number22Player nameFraserAverage rating
RangersAvgSquad number7Player nameHagiAverage rating
Squad number25Player nameRoofeAverage rating
Squad number16Player namePattersonAverage rating
Squad number17Player nameAriboAverage rating
Squad number20Player nameMorelosAverage rating
Squad number26Player nameBalogunAverage rating
Squad number10Player nameDavisAverage rating
Squad number4Player nameLundstramAverage rating
Squad number6Player nameGoldsonAverage rating
Squad number2Player nameTavernierAverage rating
Squad number33Player nameMcLaughlinAverage rating
Squad number30Player nameSakalaAverage rating
Squad number31Player nameBarisicAverage rating
Squad number37Player nameArfieldAverage rating
- Line-upsMatch StatsLive Text
- 1Alnwick22FraserBooked at 90mins5McCarthy4Shaughnessy44MillarSubstituted forMainat 76'minutes6Power16ErhahonSubstituted forFlynnat 45'minutes3TanserSubstituted forTaitat 45'minutes7McGrathSubstituted forat 89'minutes43Ronan9Brophy
- 33McLaughlin2TavernierBooked at 19mins6Goldson26Balogun31Barisic17Aribo10Davis4Lundstram7HagiSubstituted forArfieldat 78'minutes20MorelosBooked at 44minsSubstituted forSakalaat 69'minutes25RoofeSubstituted forPattersonat 86'minutes
Referee:Steven McLeanMatch StatsHome TeamSt MirrenAway TeamRangersPossessionHome46%Away54%ShotsHome4Away19Shots on TargetHome2Away7CornersHome4Away7FoulsHome11Away11Live TextPost update
Match ends, St. Mirren 1, Rangers 2.
Second Half ends, St. Mirren 1, Rangers 2.
Leon Balogun (Rangers) wins a free kick in the defensive half.
Foul by Joe Shaughnessy (St. Mirren).
Corner, St. Mirren. Conceded by Connor Goldson.
Corner, Rangers. Conceded by Conor McCarthy.
Attempt blocked. Borna Barisic (Rangers) left footed shot from outside the box is blocked.
Marcus Fraser (St. Mirren) is shown the yellow card for a bad foul.
Nathan Patterson (Rangers) wins a free kick in the attacking half.
Foul by Marcus Fraser (St. Mirren).
Fashion Sakala (Rangers) wins a free kick in the defensive half.
Foul by Richard Tait (St. Mirren).
Corner, St. Mirren. Conceded by Leon Balogun.
Attempt missed. Curtis Main (St. Mirren) header from the centre of the box misses to the left. Assisted by Connor Ronan with a cross following a set piece situation.
Foul by Leon Balogun (Rangers).
Curtis Main (St. Mirren) wins a free kick in the attacking half.
Jamie McGrath went off injured after St. Mirren had used all subs.
Substitution, Rangers. Nathan Patterson replaces Kemar Roofe.
Corner, Rangers. Conceded by Marcus Fraser.
Connor Goldson (Rangers) wins a free kick in the defensive half.
Page 1 of 5rewindpreviousNavigate to the next pagenextNavigate to the last pageforward