Rangers bounced back from their Europa League heartbreak as they ended the season on a high at Hampden.
The first 90 minutes weren't pretty with Ellis Simms missing a huge early chance for Hearts while Craig Gordon was at his best to deny Ryan Kent and Joe Aribo.
But the moments of quality from Rangers were saved for extra-time as Ryan Kent fired home a piledriver before Scott Wright added a wonderful second to put Rangers in charge.
It might not have been the glorious end to the season they would have dreamed of but two moments of quality ensured Gio van Bronckhorst finishes his first season with some silverware to show for it.
Here's how the Rangers players rated at Hampden.
Rangers player ratings
Jon McLaughlin : Saved by the post in first half and prepared to act as emergency sweeper when asked to field long balls in behind his backline. Fielded with assurance and dealt well with all that came his way which was almost nothing. 7
James Tavernier: Delivered early message to McKay with crude lunge in opening seconds. Escaped a caution despite persistent fouling. Dead ball delivery was excellent after assuming corner duty but a quietly effective display from the skipper. 6
Connor Goldson: It could have been the Englishman's farewell appearance and it wasn't the hustle bustle test which he would have anticipated. Strong in the air and alert to any danger in assured performance. 6
Calvin Bassey: Recovered after being clattered by Haring early on and was a potent attacking threat with trademark bursts down the left flank. Several superb deliveries which deserved a better reward and unlucky with 74th minute effort. Immense. 8
Leon Balogun: Coped well with the threat of Simms down his flank and always looking to provide cover inside when required.
Powered late header over the top. Proved a more than capable replacement for Barisic. 6
Steven Davis: Another potential swan song appearance, stunning pass to release Aribo for chance on the half hour mark was a notable highlight. Neat and tidy without any frills before tiring to be replaced by Jack. 6
John Lundstram: Sat deep in midfield to try and build play but it was all too one dimensional and sideways in first half. Thunderbolt strike in 85th minute was blocked by Souttar but midfield controller as Gers dominated after the break. 7
Scott Arfield: First half attempt from 18-yards was too straight at Gordon but shuttled from middle to front all afternoon to supplement attack. Caught up in what became a muddled last third formation. 6
Amad Diallo: Surprise starter and burst into life with a superb touch and cross in 15th minute which had Souttar scrambling clear but missed a snip with 42nd minute header which he nodded over the top. Too often outmuscled. Booked. 5
Joe Aribo: Dropped off to trigger a succession of attacks but lack of a natural finishing instinct was again telling. Glanced a header wide of target before being kept out by Gordon's outstretched leg at the death and headed over the bar from close-range. 6
Ryan Kent : Drifted in and out of proceedings but a real danger when he moved inside to central positions. Dragged a first half shot wide of target. Defied by Gordon block at the restart but final ball and cutting edge badly lacking. 5
Subs used
Scott Wright: Replaced Diallo just after the hour mark before nodding a cross against the bar before sliding home his side's second. 7
Ryan Jack: On for Davis and rattled in a screamer from the edge of the box for fantastic extra-time winner. 7
Glen Kamara: On in 81st minute and added an instant creative spark and forward intent. 5
Fashion Sakala: Pace stretched Hearts for last period of extra-time. 2
Allan McGregor: Given last few seconds to take a bow in front of fans who chanted his name in nice touch. 1