Holders Rangers beat St Johnstone to progress to the last 16 of the Scottish Cup thanks to left-back Borna Barisic’s first goal in nearly two years.
St Johnstone went toe-to-toe with the side sitting second in the Premiership as only 400 home fans turned up because of a protest against the club.
But Barisic pounced to superbly thump home after a Fashion Sakala shot came off a post just before the break.
James Tavernier swept a Theo Bair effort off the line to secure the win.
It means St Johnstone have now exited at this stage twice in a row since lifting the trophy.
Having overcome their own first hurdle in defence of the cup, Rangers have gone 11 games without defeat, winning five in a row away from home.
St Johnstone ended Rangers’ 14-match unbeaten run in Perth on the Glasgow side’s last Premiership visit in November, but they had not won at home in four games since, losing the latest three.
Indeed, it would have felt like an away game considering Rangers fans filled three quarters of McDiarmid Park thanks to that protest by the home support against their own club’s allocation and pricing of tickets.
Yet manager Callum Davidson’s decision to change nearly half his team looked to be working in a start that must have impressed those who deemed to turn up.
Rangers, though, should have gone ahead when a fine Ryan Kent cross found Sakala only for the in-form forward to volley wide from just 10 yards after 16 minutes.
Barisic came close with a curling free-kick, but shortly after St Johnstone lost defender James Brown to a cut eye, the Croatia full-back thumped in his first-ever goal from open play for Rangers.
Normally a set-piece specialist, he pounced after a Sakala shot came off the far post and sent a first-time drive into the far top corner – his first goal for either club and country since February 2021.
Rangers had conceded first in 10 of their previous 15 games, including twice already this week, but any relief they felt was not reflected in their performance as they struggled to dominate their hosts on an awkward, bobbly surface.
In fairness, home goalkeeper Remi Matthews superbly denied both Connor Goldson and Scott Wright before Andy Considine cleared off the line.
However, the visitors also survived a nervous moment when captain Tavernier cleared that Bair effort before Allan McGregor, restored to Rangers’ goal, saved from former Ibrox striker Nicky Clark as St Johnstone applied late pressure.
Player of the match – Fashion Sakala (Rangers)
What they said
St Johnstone manager Callum Davidson: “We did everything we could to try to win the game. I can’t fault the lads for effort.
“We conceded at a very bad time. It just wasn’t enough today but I’m happy with how we went about our business. In the second half we stayed in there. I would take that desire for the rest of the season. I hope the supporters appreciated the effort we put in today.”
Rangers manager Michael Beale: “Mission accomplished, third game in six days. The boys’ mentality has been fantastic. Apart from one hairy moment at the end we kept St Johnstone off us. I am absolutely delighted.
“Our fans have been fantastic. They have packed out every stadium we’ve been to this week, straight after Christmas, in January. That’s not easy. We wanted to reward them tonight and I think we have done.
“The clean sheets are important. That was what the foundation was built on three or four years ago.”
- 2BrownSubstituted forCareyat 44′minutes
- 18MacPhersonSubstituted forWotherspoonat 84′minutes
- 34PhillipsBooked at 83mins
- 26McLennanSubstituted forMurphyat 84′minutes
- 22HallbergSubstituted forClarkat 67′minutes
- 7MaySubstituted forBairat 67′minutes
- 6GoldsonBooked at 90mins
- 8JackSubstituted forArfieldat 90+3′minutes
- 30SakalaSubstituted forWrightat 67′minutes
- 71TillmanBooked at 33minsSubstituted forKamaraat 67′minutes
- 14KentSubstituted forLowryat 83′minutes
- 20MorelosSubstituted forColakat 90+3′minutes
Match ends, St. Johnstone 0, Rangers 1.
Second Half ends, St. Johnstone 0, Rangers 1.
Corner, Rangers. Conceded by Andrew Considine.
Substitution, Rangers. Scott Arfield replaces Ryan Jack.
Substitution, Rangers. Antonio-Mirko Colak replaces Alfredo Morelos.
Connor Goldson (Rangers) is shown the yellow card.
Connor Goldson (Rangers) wins a free kick in the defensive half.
Foul by Theo Bair (St. Johnstone).
Attempt saved. Nicky Clark (St. Johnstone) right footed shot from outside the box is saved in the top centre of the goal.
Foul by Alex Lowry (Rangers).
David Wotherspoon (St. Johnstone) wins a free kick in the defensive half.
Attempt missed. Alfredo Morelos (Rangers) right footed shot from the right side of the box is too high.
Substitution, St. Johnstone. David Wotherspoon replaces Cameron MacPherson.
Substitution, St. Johnstone. Jamie Murphy replaces Connor McLennan.
Substitution, Rangers. Alex Lowry replaces Ryan Kent.
Daniel Phillips (St. Johnstone) is shown the yellow card for a bad foul.
Ryan Kent (Rangers) wins a free kick in the defensive half.
Foul by Daniel Phillips (St. Johnstone).
Attempt blocked. Theo Bair (St. Johnstone) right footed shot from the centre of the box is blocked.
Attempt blocked. John Lundstram (Rangers) right footed shot from the centre of the box is blocked.