Rangers are one game away from completing an unbeaten Scottish Premiership campaign after breezing past Livingston.
James Tavernier put the champions in front from the penalty spot after keeper Max Stryjek felled Ianis Hagi.
Ryan Kent finished a one-two with Alfredo Morelos by tapping in the visitors’ second and Hagi slammed in their third.
Scott Pittman and Jaze Kabia hit the woodwork in Livi’s best chances.
Steven Gerrard’s Rangers, who set a new Scottish record of clean sheets in a 38-game season with 25, will receive the Premiership trophy after Saturday’s home match with Aberdeen.
Livingston remain in contention to jump above their next opponents St Johnstone into fifth place, with the sides level on points and Saints two goals better off.
Jay Emmanuel-Thomas troubled Rangers in the early stages, creating space for Josh Mullin to force a save from Jon McLaughlin.
Hagi and Kent flashed shots wide of the Livingston goal before the first half’s most contentious moment.
Kemar Roofe flicked the ball through for Hagi in behind the Livingston defence and the Romanian played the ball before he and Stryjek collided. Referee Don Robertson regarded it as a foul, despite protests that Hagi had knocked the ball wide.
Tavernier, having missed his past three penalties, stepped up and converted to the goalkeeper’s right – his 19th goal this season.
And the club captain was involved in the second goal, his ball over the top finding Kent. The winger tried to lay off for Morelos but forced the striker wide then received the return pass to finish.
Livingston were inches away from halving their deficit on two occasions. Pittman’s shot rattled the bar and Rangers keeper Jon McLaughlin forced the ball clear under pressure from the chasing pack.
Then substitute Kabia was presented with their best chance after Nicky Devlin’s deflected cross, the forward only able to hit the outside of the left-hand post.
Joe Aribo tested Stryjek moments later and Kabia was off target when he latched on to another Devlin delivery at the other end.
Rangers completed the scoring with a swift move on the left, Roofe’s replacement Cedric Itten squaring for Hagi to apply a ruthless finish.
Man of the match – James Tavernier
What did we learn?
Livingston’s mid-season 14-match unbeaten run has been the catalyst for their top-half finish but they have won just once since that sequence ended in early February.
Emmanuel-Thomas is a commanding presence in attack, but needs more support from wide areas if Livingston are to finish the season on a high.
Amid injuries and substitutes, Rangers listed only six substitutes and midfielder Aribo played in an unfamiliar left-back role.
He looked far from out of place but there was a deliberate ploy from the visitors to attack on the other side with Tavernier, Kent and Hagi – a tactic that stretched the hosts.
What did they say?
Livingston manager David Martindale: “Wee bit disappointed. I’m quite happy with the performance in spells in the game. Rangers were far more clinical in our box.
“We had more than enough chances to take something from the game. We’ve hit the bar, we’ve hit the post, we’ve also had another chance.”
Rangers manager Steven Gerrard: “Tonight we get the clean sheet record and Saturday gives us the opportunity to go break 100 points, which will round off an incredible league campaign.
“Our record at home has been ever so strong – we just need to go and do the final piece now.”
Rangers complete their campaign against Aberdeen on Saturday (12:30 BST) while Livingston play their last game of the season away to St Johnstone on Saturday (12:30).
- 32StryjekBooked at 41mins
- 5FitzwaterSubstituted forAmbroseat 85′minutes
- 8PittmanBooked at 31mins
- 18HoltSubstituted forBartleyat 60′minutes
- 10SibbaldSubstituted forMcMillanat 61′minutes
- 14MullinSubstituted forKabiaat 60′minutes
- 9Emmanuel-ThomasSubstituted forPoplatnikat 74′minutes
- 4SimpsonBooked at 23mins
- 17AriboSubstituted forKingat 86′minutes
- 7HagiSubstituted forStewartat 86′minutes
- 25RoofeSubstituted forIttenat 80′minutes
- 20MorelosBooked at 30minsSubstituted forDefoeat 80′minutes
- 14KentSubstituted forWrightat 84′minutes
Match ends, Livingston 0, Rangers 3.
Second Half ends, Livingston 0, Rangers 3.
Attempt missed. Cedric Itten (Rangers) right footed shot from the left side of the box is just a bit too high. Assisted by Connor Goldson following a corner.
Corner, Rangers. Conceded by Efe Ambrose.
Hand ball by Greg Stewart (Rangers).
Attempt missed. Jon Guthrie (Livingston) right footed shot from the centre of the box is too high. Assisted by Jaze Kabia with a cross.
Foul by Connor Goldson (Rangers).
Matej Poplatnik (Livingston) wins a free kick on the right wing.
Foul by Cedric Itten (Rangers).
Marvin Bartley (Livingston) wins a free kick on the left wing.
Substitution, Rangers. Leon Thomson King replaces Joe Aribo.
Substitution, Rangers. Greg Stewart replaces Ianis Hagi.
Attempt missed. Jon Guthrie (Livingston) header from the centre of the box misses to the right. Assisted by Jaze Kabia with a cross following a corner.
Substitution, Livingston. Efe Ambrose replaces Jack Fitzwater.
Corner, Livingston. Conceded by James Tavernier.
Substitution, Rangers. Scott Wright replaces Ryan Kent.
Goal! Livingston 0, Rangers 3. Ianis Hagi (Rangers) right footed shot from the centre of the box to the bottom left corner. Assisted by Cedric Itten.
Connor Goldson (Rangers) wins a free kick in the defensive half.
Foul by Scott Pittman (Livingston).
Substitution, Rangers. Cedric Itten replaces Kemar Roofe.