Match ends, Arbroath 1, Rangers 2.
Rangers preserved their unbeaten Scottish League One record but were given a stern examination by Arbroath.
Jon Daly headed in from Fraser Aird's corner to give the division's winners a first-half lead.
Paul McManus took advantage of slackness in the Rangers defence to slot home Arbroath's leveller.
The hosts threatened to move ahead but it was Ally McCoist's side who claimed victory, Aird tucking away the winner late on.
The defeat leaves Arbroath seven points adrift at the bottom of the table with five matches to play.
However, Paul Sheerin's men started the brighter of the two sides and Kevin Nicoll fired over after being picked out by the player-manager early on.
Bobby Linn then dragged a low effort wide after racing clear of the visitors' back four and a Sheerin corner was then nodded over by Michael Travis.
Both sides had had penalty appeals turned down by the time Rangers took the lead, referee Euan Anderson disinterested by claims of handball against Arbroath's Alan Cook or Sebastien Faure's challenge on McManus.
Daly powered home a firm header from Aird's delivery to break the deadlock.
Undeterred, Arbroath continued to press and Linn's shot into the side-netting reminded Rangers they had a game on their hands.
Aird then drilled the ball off Sandy Wood's crossbar from 30 yards and also had a free-kick saved by the goalkeeper.
The Arbroath goal frame was struck again early in the second half as defender Travis narrowly avoided scoring an own goal with a wayward header.
Sheerin's men were then gifted an equaliser as Faure's header back to keeper Cammy Bell was intercepted and struck home by McManus.
Cook headed over another Sheerin delivery as Arbroath pushed for a crucial three points in their battle against relegation.
But they were undone when Daly's mis-hit shot was turned into the net by Aird.
There was still one more chance for the home side but Alex Keddie could not convert after Nicoll had headed on Sheerin's free-kick.
- 6LindsaySubstituted forRobertsonat 88'minutes
- 4NicollBooked at 44mins
- 10CookSubstituted forAdamsat 90+3'minutes
- 2FosterBooked at 72mins
- 11CrawfordSubstituted forGallagherat 73'minutes
- 7Peralta Sosa
- 9DalyBooked at 81minsSubstituted forShielsat 89'minutes
- 4AirdSubstituted forSmithat 89'minutes
- 18Sanchez Cribari
- Euan Anderson
- Shots on Target
Second Half ends, Arbroath 1, Rangers 2.
Attempt missed. Alex Keddie (Arbroath) header from very close range is too high.
Foul by Arnold Peralta (Rangers).
Kevin Nicoll (Arbroath) wins a free kick in the attacking half.
Substitution, Arbroath. Scott Adams replaces Alan Cook.
Steven Smith (Rangers) wins a free kick in the defensive half.
Foul by Michael Travis (Arbroath).
Attempt blocked. Paul McManus (Arbroath) right footed shot from outside the box is blocked.
Substitution, Rangers. Dean Shiels replaces Jon Daly.
Substitution, Rangers. Steven Smith replaces Fraser Aird.
Substitution, Arbroath. Dayle Robertson replaces Jonathan Lindsay.
Goal! Arbroath 1, Rangers 2. Fraser Aird (Rangers) right footed shot from the centre of the box to the bottom right corner. Assisted by Calum Gallagher.
Calum Gallagher (Rangers) wins a free kick in the defensive half.
Foul by Jonathan Lindsay (Arbroath).
Corner, Rangers. Conceded by Jonathan Lindsay.
Jon Daly (Rangers) is shown the yellow card.
Foul by Jon Daly (Rangers).
Alex Keddie (Arbroath) wins a free kick on the left wing.
Attempt missed. Alan Cook (Arbroath) header from the centre of the box is just a bit too high.