Celtic's Ladbrokes Premiership title party was put on hold for another week after Rangers claimed a 3-1 win over Hearts at Tynecastle.
Goals from Jermain Defoe, Ryan Jack and Nikola Katic mean Neil Lennon's champions elect will have to put the champagne on ice, at least until next weekend's Parkhead clash with Kilmarnock.
The Hoops, who were hoping to celebrate their eighth straight title against Hibernian on Sunday, have now had their lead at the top temporarily cut back to eight points after seeing Steven Gerrard's side once again dominate Craig Levein's William Hill Scottish Cup finalists.
Hearts should have been on a high after booking their slot in next month's Hampden clash with Lennon's triple treble-chasers but all they had to cheer was Steven MacLean's late consolation effort.
For the fourth time this season, Hearts contributed to their own downfall against Rangers by failing to match up to the Light Blues' desire when pressing.
This was a big chance for the Jambos squad to press their claim for a starting slot on cup final day but some may find themselves disappointed come May 25 after this display.
Rangers, who have now racked up seven straight wins against Hearts, were still without the suspended Alfredo Morelos and Ryan Kent, while Hearts had to make a late swap with Craig Wighton taking over from the ill Sean Clare.
As usual, the tight surroundings in Gorgie made for a combative affair and there was not much in it early on.
Neither side could afford to be half-hearted and it was the Jambos who paid the price 15 minutes in as Wighton allowed Jon Flanagan to slide in and rob possession.
Glen Kamara pounced on the loose ball and immediately sent Defoe racing in behind. The veteran striker got his nose in front of John Souttar and the reported Rangers target could do nothing as the Englishman beat Zdenek Zlamal for his seventh Rangers strike.
The goal did jolt a response from Levein's team. Uche Ikpeazu was allowed to roll Katic far too easily on the edge of the Rangers box but his wild shot soared over.
The big frontman then got his head to Zlamal's long punt, sending Wighton racing beyond Connor Goldson, but the former Dundee man dragged his attempt wide.
And with nine minutes of the opening period to play, Rangers' hunger to win the ball again got the better of the hosts.
Jack hared in to close down Ollie Bozanic, stripping the Australian of the ball on halfway before feeding it to Daniel Candeias. The midfielder did not hang about and, as he raced beyond Arnaud Djoum, his Portuguese colleague returned the ball into his path with only Zlamal to beat and Jack did the rest with a cool finish.
The clash was the first to be played at Tynecastle since chairwoman Ann Budge took the surprise decision to close a section of the Wheatfield Stand in a bid to combat recent incidents of fan misbehaviour.
But the rest of the home stands were soon starting to empty as Katic added number three in the 48th minute. Steven Davis rolled a short corner to Candeias, who hung up a cross to the back post for the big Croatian defender to slide home.
MacLean replaced Wighton midway through the second period and pulled one back in the 74 minute as his header from Jake Mulraney's cross found the corner of the net.
But it was Rangers who came closest to adding another as Zlamal was forced to make two late stops to deny Glenn Middleton and Scott Arfield.
ga('create', 'UA-72310761-1', 'auto', {'name': 'pacontentapi'});
ga('pacontentapi.set', 'referrer', location.origin);
ga('pacontentapi.set', 'dimension1', 'By Andy Newport, Press Association Sport');
ga('pacontentapi.set', 'dimension2', '7a7a02e3-57b6-4e2b-9cf4-850e07ace1de');
ga('pacontentapi.set', 'dimension3', 'paservice:sport,paservice:sport:club-news,paservice:sport:football,paservice:sport:match-reports,paservice:sport:uk');
ga('pacontentapi.set', 'dimension6', 'story');
ga('pacontentapi.set', 'dimension7', 'composite');
ga('pacontentapi.set', 'dimension8', null);
ga('pacontentapi.set', 'dimension9', 'sport:football');
ga('pacontentapi.send', 'pageview', { 'location': location.href, 'page': (location.pathname + location.search + location.hash), 'title': 'Rangers beat Hearts to keep Celtic champagne on ice'});