Rangers maintained their four-point lead at the top of the Scottish Premiership after Scott Arfield’s goal earned a nervy win over Livingston.
For 75 minutes at Ibrox, the champions looked set to drop points for the second game in a row and concede more ground to closest challengers Celtic.
But Arfield netted after coming off the bench and extended Rangers’ unbeaten run in all competitions to 21.
It was just Livingston’s second defeat in seven games.
And, although they remain ninth, both Dundee and bottom-club St Johnstone edged a point closer to them in the battle to avoid relegation.
It was a big night for 18-year-old Alex Lowry, given his first start for Rangers after scoring from the bench on his debut in the 4-0 Scottish Cup romp over Stirling Albion.
And the teenager impressed, being at the centre of everything Rangers threw at Livingston in the first half.
He had the champions’ first chance of the match as Fashion Sakala teed him up on the edge of the box, but he shot straight at goalkeeper Max Stryjek.
Then Lowry picked out Scott Wright, whose goalbound shot beat the goalkeeper, but not Jack Fitzwater who had raced back to clear off the line.
Twice the twinkled-toed Lowry collected the ball out wide and drove neat balls across the face of goal from both wings, but each time no-one in blue could take advantage.
Livingston were giving a good account of themselves. Fitzwater met a corner with a downward header, but Allan McGregor saved it on the line. The visiting players raced to the referee to appeal for handball, but Don Robertson ignored their claims.
And Stryjek had to pull off a fantastic save at the other end to deny the home side when James Tavernier’s driven cross found Sakala at the front post, and the Polish goalkeeper got his legs to the ball to deflect it over the bar.
Sakala became the main man after the break as he took the game by the scruff of the neck, but he was struggling to add the end product to his play.
A good turn and shot led to an easy save for Stryjek, then a driving run forward was followed by a shot that was always rising over the bar.
But Arfield eased Ibrox nerves when he finally broke the deadlock. Borna Barisic exchanged passes with Sakala, and chipped a ball to the veteran midfielder, who hooked it over the defence and into the far corner.
Ayo Obileye had a late chance for Livingston but couldn’t connect with a looping ball into the box as Rangers held on.
Man of the match – Fashion Sakala
What did we learn?
January is proving to be a tough month for Rangers, and after dropping points at Aberdeen they nearly squandered more against Livingston as they struggled to cut the visitors open.
But the performance of teenager Lowry will be one of the talking points among the support. The gifted midfielder went looking for the ball from the first whistle and was at the centre of much of their good play. He had a quieter second half but still showed flashes of what he could do.
Livingston will be frustrated not to have left with a point. A Fitzwater header apart they didn’t create too many chances, but the performances of Obileye and Stephane Omeonga in particular were positives.
Rangers are away to Ross County in the Scottish Premiership on Saturday (12:30 GMT), while Livingston are at Hibernian later that day (15:00).
Player of the match
Squad number37Player nameArfield
Squad number51Player nameLowry
Squad number30Player nameSakala
Squad number1Player nameMcGregor
Squad number8Player nameJack
Squad number31Player nameBarisic
Squad number25Player nameRoofe
Squad number2Player nameTavernier
Squad number3Player nameBassey
Squad number6Player nameGoldson
Squad number19Player nameSands
Squad number11Player nameItten
Squad number23Player nameWright
Squad number18Player nameKamara
Squad number32Player nameStryjek
Squad number22Player nameShinnie
Squad number9Player nameAnderson
Squad number3Player nameLongridge
Squad number6Player nameObileye
Squad number2Player nameDevlin
Squad number14Player nameBailey
Squad number8Player namePittman
Squad number18Player nameHolt
Squad number33Player nameOmeonga
Squad number5Player nameFitzwater
Squad number19Player nameNouble
Squad number23Player nameChukwuemeka
Squad number17Player nameForrest
Squad number21Player nameMcMillan
6GoldsonBooked at 31mins
19SandsSubstituted forArfieldat 59′minutes
23WrightSubstituted forJackat 76′minutes
11IttenSubstituted forRoofeat 59′minutes
3LongridgeBooked at 62minsSubstituted forMcMillanat 76′minutes
33OmeongaBooked at 21mins
14BaileySubstituted forChukwuemekaat 80′minutes
9AndersonSubstituted forNoubleat 65′minutes
22ShinnieSubstituted forForrestat 76′minutes
Match ends, Rangers 1, Livingston 0.
Second Half ends, Rangers 1, Livingston 0.
Corner, Rangers. Conceded by Nicky Devlin.
Attempt missed. Jack Fitzwater (Livingston) right footed shot from the centre of the box is close, but misses to the left. Assisted by Joel Nouble with a headed pass following a set piece situation.
Offside, Rangers. Scott Arfield tries a through ball, but Kemar Roofe is caught offside.
Fashion Sakala (Rangers) wins a free kick in the defensive half.
Foul by Stephane Omeonga (Livingston).
Foul by Glen Kamara (Rangers).
Caleb Chukwuemeka (Livingston) wins a free kick in the defensive half.