Dramatic injury-time goals from James Tavernier and Danilo handed Rangers a vital comeback win over Hearts at Ibrox as they reduced the gap at the top of the Scottish Premiership table to five points.
James Tavernier made up for an earlier penalty miss by slotting home a 90th minute spot-kick awarded by VAR, before the Gers skipper picked out substitute Danilo to head in the match-winner deep into stoppage time, cancelling out Lawrence Shankland’s early headed opener.
The victories maintains boss Philippe Clement’s unbeaten start to his Light Blues tenure with two wins and a draw in what was a dress rehearsal ahead of next Sunday’s Viaplay Cup semi-final.
The home crowd were silenced after just four minutes when prolific Jambos frontman Shankland guided Alex Cochrane’s cross beyond Jack Butland. The hosts were booed off the field at half-time after Tavernier squandered a glorious chance to equalise from the penalty spot after Toby Sibbick was penalised for a rash challenge on Todd Cantwell inside the box.
The Gers skipper rattled the woodwork before Danilo entered the fray sporting a face mask following his recent absence after undergoing surgery on a fractured cheekbone.
Rangers struggled to break down a resolute Hearts backline until Peter Haring brought down Connor Goldson in the final minute of regulation time for a shirt pull. Tavernier made no mistake on this occasion, dusting himself down and firing straight down the middle as visiting keeper Zander Clark guessed the wrong way.
Moments later, an incredible turnaround was complete when Tavernier’s perfectly-weighted cross was met in the air by Brazilian striker Danilo to bullet a header into the net, sparking bedlam in the stands and a sigh of relief in the home dugout.
Here’s our post-match player ratings from Ibrox:
Unused subs: Robby McCrorie (GK), John Souttar, Jose Cifuentes, Kieran Dowell, Adam Devine.

9. Todd Cantwell - 7/10
Looked a constant menace and won several free-kicks. Won his side a penalty after being upended by Sibbick towards the end of the first-half. A classy performance before being subbed. | Getty Images

10. Sam Lammers - 5/10
Nowhere near good enough once again. A few clever touches but didn’t have a big impact on the game. Wasn’t able to keep a close-range effort down just before the hour mark when he should’ve hit the target. Subbed | Getty Images

11. Abdallah Sima - 6/10
After a flurry of top performances, the Brighton loanee struggled to hit those heights. Fairly quiet but has already proven he is a key player for this team. | Getty Images

12. Cyriel Dessers - 5/10
Thought he had levelled the match after flicking Goldson’s header towards goal before Shankland cleared off the line. Had no real influence and was hooked at half-time by Clement. | Getty Images

