Rangers followed up their Viaplay Cup success by beating 10-man St Johnstone to move within two points of Scottish Premiership leaders Celtic.
First-half substitute Cyriel Dessers struck to put Philippe Clement's men in front and the visitors' task was made significantly harder when Diallang Jaiyesimi was sent off for a foul on John Lundstram.
The Perth side, who slip a place to ninth, restricted their hosts thereafter with goalkeeper Dimitar Mitov denying Dessers and Sam Lammers.
But James Tavernier converted a late penalty after Mitov fouled Dessers.
The Ibrox side still have a game in hand on Celtic but will not play that match away to Hibernian until after the winter break.
Reaction & as it happenedKeep up to date with RangersThe latest St Johnstone newsRangers were limited to long-range efforts early on and, from one, Kemar Roofe had a shot blocked by Andy Considine, then had to be withdrawn. It was the latest injury setback in a hugely frustrating 18 months for the Jamaica forward.
A Rangers corner opened up a chance for John Souttar, but his shot could not breach the sea of bodies in front of goal.
The hosts were searching for any kind of opening and when Oludare Olufunwa could not cut out Tavernier's cross, Dessers was on hand to knock the ball through Mitov's legs.
St Johnstone took another blow when Jaiyesimi saw red for catching Lundstram's ankle late, VAR upgrading the on-field decision of a yellow card.
Another Dessers shot, deflected, brought Mitov into action and the goalkeeper also had to hold a fierce Kieran Dowell effort moments later, the midfielder making his first start since August.
Fresh from his cup final winner against Aberdeen on Sunday, Tavernier flashed an effort wide as Saints continued to toil.
Rangers continued where they left off after the break with Mitov excelling with a block on Lammers' shot from close range.
Dessers tested the goalkeeper from the edge of the box, Lammers was foiled with a bouncing shot and Abdallah Sima and Tavernier were off target in quick succession.
But the clincher eventually came. Substitute Scott Wright released Dessers on goal and, after he was tripped by Mitov, captain Tavernier struck confidently from 12 yards.
Player of the match - Kieran Dowell
The midfielder made a positive impact with vision and some nice touches once allowed to play higher up the pitchSaints can't recover from punishing five minutes - analysis
Losing Jaiyesimi so soon after going a goal down really limited St Johnstone's ambition and from that moment on, Rangers found the spaces they had not come across in the opening 25 minutes.
Chris Kane was sent on in place of midfielder Sven Sprangler to give Saints some presence in attack and the substitute won valuable possession and the odd free-kick to take the pressure off his defensive colleagues.
Rangers' third game inside seven days, with a raft of changes before and during the game, appeared to take its toll. The hosts' tempo faded against a low block and by the end there was a nervousness as the visitors occasionally moved upfield.
But crucially they kept probing and eventually made the game safe.
What the managers said
Rangers manager Philippe Clement: "In the end it was a clear, clear dominant game where we had the ball all the time also 11 against 11.
"It's not easy to break a defence of so many players in such a small space close to their goal, to break it open. We did two times and several times more but there was also a good goalkeeper. Three points, clean sheet, deserved victory."
St Johnstone manager Craig Levein: "With us being reduced to 10 men for over an hour, to come away from here only losing two goals, the players deserve a lot of credit for that, for the work that they put in.
"[The red card] made it extremely difficult for the players out there. We were very competitive and all credit to the players for digging in and helping each other out and working so hard."
What's next?
Rangers visit Motherwell on Sunday (12:00 GMT). St Johnstone's last match before Christmas is on Saturday away to Kilmarnock (15:00).
Line-ups
Rangers
Formation 4-2-3-1
1Butland2TavernierSubstituted forKingat 86'minutes6GoldsonBooked at 45mins5Souttar3Yilmaz4LundstramSubstituted forSterlingat 45'minutes20Dowell45McCausland14LammersSubstituted forCantwellat 68'minutesBooked at 90mins19SimaSubstituted forWrightat 68'minutes25RoofeSubstituted forDessersat 16'minutesSubstitutes
9Dessers13Cantwell17Matondo21Sterling23Wright27Balogun28McCrorie31Barisic38KingSt Johnstone
Formation 5-4-1
1Mitov46FranczakSubstituted forGallacherat 60'minutes17OlufunwaSubstituted forMcGowanat 72'minutes6Gordon4Considine19Robinson15Kucheryavyi34PhillipsBooked at 45minsSubstituted forCareyat 72'minutes23SpranglerSubstituted forKaneat 35'minutes22SmithBooked at 38minsSubstituted forCostelloeat 72'minutes13JaiyesimiBooked at 33minsSubstitutes
3Gallacher5McGowan7May9Kane10Clark11Carey27Turner-Cooke31Richards44CostelloeReferee:Alan Muir
Attendance:46,931
Live Text
Match ends, Rangers 2, St. Johnstone 0.
Second Half ends, Rangers 2, St. Johnstone 0.
Attempt missed. Max Kucheryavyi (St. Johnstone) left footed shot from outside the box is too high from a direct free kick.
Todd Cantwell (Rangers) is shown the yellow card for a bad foul.
Foul by Todd Cantwell (Rangers).
Dara Costelloe (St. Johnstone) wins a free kick in the attacking half.
Corner, St. Johnstone. Conceded by John Souttar.
Attempt blocked. Graham Carey (St. Johnstone) left footed shot from outside the box is blocked.
Foul by Cyriel Dessers (Rangers).
Max Kucheryavyi (St. Johnstone) wins a free kick in the attacking half.
Corner, St. Johnstone. Conceded by John Souttar.
Attempt blocked. Kieran Dowell (Rangers) left footed shot from outside the box is blocked. Assisted by Scott Wright.
Attempt blocked. Scott Wright (Rangers) right footed shot from outside the box is blocked. Assisted by Kieran Dowell.
Substitution, Rangers. Leon King replaces James Tavernier.
Goal! Rangers 2, St. Johnstone 0. James Tavernier (Rangers) converts the penalty with a right footed shot to the bottom left corner.
Penalty Rangers. Cyriel Dessers draws a foul in the penalty area.
Penalty conceded by Dimitar Mitov (St. Johnstone) after a foul in the penalty area.
Cyriel Dessers (Rangers) wins a free kick in the attacking half.
Foul by Liam Gordon (St. Johnstone).
Foul by Ridvan Yilmaz (Rangers).
Player of the match
DessersCyriel Dessers
with an average of 7.80
Rangers
Squad number9Player nameDessers
Squad number2Player nameTavernier
Squad number21Player nameSterling
Squad number45Player nameMcCausland
Squad number20Player nameDowell
Squad number4Player nameLundstram
Squad number5Player nameSouttar
Squad number6Player nameGoldson
Squad number19Player nameSima
Squad number1Player nameButland
Squad number13Player nameCantwell
Squad number3Player nameYilmaz
Squad number23Player nameWright
Squad number38Player nameKing
Squad number14Player nameLammers
Squad number25Player nameRoofe
St Johnstone
Squad number1Player nameMitov
Squad number22Player nameSmith
Squad number46Player nameFranczak
Squad number19Player nameRobinson
Squad number15Player nameKucheryavyi
Squad number17Player nameOlufunwa
Squad number34Player namePhillips
Squad number23Player nameSprangler
Squad number6Player nameGordon
Squad number4Player nameConsidine
Squad number11Player nameCarey
Squad number9Player nameKane
Squad number44Player nameCostelloe
Squad number13Player nameJaiyesimi
Squad number3Player nameGallacher
Squad number5Player nameMcGowan