St Mirren lifted their first major silverware in more than a quarter of a century as they came from behind to beat Hearts in a thrilling Scottish League Cup final.
Ryan Stevenson's deflected shot put Hearts ahead in 10 minutes and a John Sutton header and Mehdi Taouil shot should have added to their lead.
But Esmael Goncalves and Steven Thompson struck either side of half-time to stun Gary Locke's side.
Conor Newton rounded off a sweet move with a thunderous strike for Saints' third and though Stevenson added a late second in a frantic closing period, the Buddies clung on.
This was the Paisley's side's first success in the tournament and will go a long way to erasing painful memories of losing to nine-man Rangers in the 2010 final.
St Mirren showed early nerves, with Hearts forcing a series of rushed clearances but the teams were, in truth, still at the getting-to-know-you stage when Stevenson sent the fans from Edinburgh into raptures with the opening goal.
Marc MacAusland and Jim Goodwin took turns to crunch into tackles to stop the maroon advance but the latter's challenge screwed to the unmarked Stevenson, who kept his head as two St Mirren players raced back in vain to support left-back Paul Dummett.
The Hearts midfielder's shot deflected off the Englishman and spun past the helpless Craig Samson.
Gary Teale offered respite down the wing as St Mirren sought a leveller, with Kevin McHattie often relying on Danny Wilson as covering centre-back to limit the threat of an incursion into goalkeeper Jamie MacDonald's box.
Yet with 21 minutes on the clock Hearts could, and probably should, have doubled their lead. Jamie Walker sped down the left wing and sent in a curling cross reminiscent of John Robertson in his prime at Nottingham Forest.
Sutton rushed to meet it and headed the ball against the post from a tight angle.
MacDonald made his first save of the match soon after, a regular gathering of a tame Goncalves shot from 25 yards, and did well to claw away a John McGinn inswinging corner in 32 minutes.
Between those incidents Hearts again came close to a second goal. Playmaker Mehdi Taouil waltzed past three static Saints and shot across goal with even the telescopic legs of Michael Ngoo unable to stab it home.
Any Hearts fans fearing those missed chances would haunt them would have been in need of an exorcism when St Mirren equalised.
Teale was already running at full pelt when Thompson played a killer pass down the inside-right channel.
Frozen Hearts looked for offside, Teale looked for Goncalves, and his pass across the area allowed the Portuguese to side-foot home with confidence.
How that invigorated St Mirren. After the interval they moved into the lead with their first attack, Dummett crossing for Thompson who lashed the ball past MacDonald from 12 yards for a cup final goal for his boyhood heroes.
Taouil's trickery looked like Hearts' most likely route to pulling level. The Buddies defence was mesmerised as the little Moroccan tip-toed his way through them on the right and smashed a cross that could have gone anywhere when it deflected off Ngoo.
It produced a good save and a corner rather than a goal and Ngoo powered a header a yard over from the set-piece.
For all Hearts' first-half superiority they could have been all but killed off with half an hour to go had Dylan McGowan not blocked a Thompson strike, with Paul McGowan firing the rebound wide.
Ngoo and Walker were the main instigators of an attempted fightback as they tried to pierce the Saints defence but the next goal came at the other end, producing a raucous response among the 17,000 Buddies fans and a moment of delirium for their manager Danny Lennon.
On-loan Newcastle midfielder Newton worked a one-two with Goncalves on the edge of the box and smashed the return ball early from 16 yards to deny MacDonald the chance to narrow the angle.
Arvydas Novikovas had come on for Walker before Saints' third, with Jason Holt replacing Darren Barr as Locke tried to freshen up his team for the closing stages.
But with Taouil also subbed it was McHattie and Stevenson who rose to the challenge to try to drag Hearts level.
The former won two challenges outside the St Mirren box and stung the palms of Samson with a controlled drive, then Stevenson stole in at the back post to shoot but his effort skimmed off the crossbar.
He was not to be denied for long, though, as he set up a nail-biting final four minutes with an angled shot that lacked power but somehow crept past the slow-to-react Samson and into the bottom corner.
The keeper redeemed himself when he denied the same player a minute from time at his near post and St Mirren hung on to spark wild celebrations among their nerve-shredded fans.
- 01 Samson
- 02 van Zanten
- 03 Dummett
- 14 McAusland
- 06 Goodwin
- 10 McGowan
- 21 Teale Booked
- 24 Newton
- 09 Thompson (Parkin - 77' )
- 29 J McGinn (Carey - 81' )
- 77 Goncalves Booked (Mair - 90' )
- 16 Adam
- 05 Mair
- 11 Carey
- 17 Mclean
- 19 Parkin
Heart of Midlothian
- 01 MacDonald
- 04 Wilson
- 05 Barr (Holt - 70' )
- 06 Webster
- 14 Walker (Novikovas - 64' )
- 29 McHattie
- 07 Stevenson Booked
- 10 Taouil (Carrick - 80' )
- 19 McGowan
- 09 Sutton Booked
- 21 Ngoo Booked
- 13 Ridgers
- 28 McKay
- 15 Holt
- 18 Novikovas
- 37 Carrick
Live Text Commentary
Full Time The referee brings the game to a close.90:00 +3:21
Graham Carey restarts play with the free kick.90:00 +3:21 Booking
Booking John Sutton is shown a yellow card for unsporting behaviour.90:00 +3:19
Free kick awarded for an unfair challenge on Graham Carey by Andy Webster.90:00 +2:29
The assistant referee signals for offside against Sam Parkin. Jamie MacDonald takes the free kick.90:00 +1:55
Michael Ngoo gives away a free kick for an unfair challenge on David van Zanten. Craig Samson restarts play with the free kick.90:00 +1:00 Substitution
Substitution Esmael Goncalves goes off and Lee Mair comes on.88:30
Ryan Stevenson takes a shot. Save by Craig Samson. Ryan Stevenson produces a left-footed shot from inside the area and strikes the post.87:17
Jason Holt has an effort at goal from outside the area missing to the wide left of the goal.85:59
Short corner worked by Esmael Goncalves, Short corner taken by Graham Carey.85:11
Free kick awarded for a foul by Dylan McGowan on Esmael Goncalves. Free kick taken by Graham Carey.84:23
The assist for the goal came from Michael Ngoo.84:23 Goal scored
Goal! - Ryan Stevenson - St Mirren 3 - 2 Hearts Ryan Stevenson grabs a goal from deep inside the penalty box to the bottom right corner of the goal. St Mirren 3-2 Hearts.83:20
Ryan Stevenson takes a shot.82:52 Booking
Booking The referee books Gary Teale for dissent.82:04 Booking
Booking Ryan Stevenson receives a yellow card for dissent.81:48
Kevin McHattie takes a shot. Save by Craig Samson.80:07 Substitution
Substitution Graham Carey comes on in place of John McGinn.79:33 Substitution
Substitution (Hearts) makes a substitution, with Dale Carrick coming on for Mehdi Taouil.76:29 Substitution
Substitution Steven Thompson goes off and Sam Parkin comes on.
Michael Ngoo challenges Jim Goodwin unfairly and gives away a free kick. Direct free kick taken by Craig Samson.74:46
Unfair challenge on John Sutton by Jim Goodwin results in a free kick. Free kick crossed by Kevin McHattie.73:14
Conor Newton gives away a free kick for an unfair challenge on Jason Holt. Mehdi Taouil takes the direct free kick.72:40
John McGinn challenges Dylan McGowan unfairly and gives away a free kick. Direct free kick taken by Andy Webster.71:51
Michael Ngoo is penalised for a handball. Craig Samson takes the free kick.70:55
Free kick awarded for a foul by Jim Goodwin on Mehdi Taouil. Kevin McHattie takes the direct free kick.68:48
Craig Samson restarts play with the free kick.68:48 Substitution
Substitution (Hearts) makes a substitution, with Jason Holt coming on for Darren Barr.68:48 Booking
Booking The referee cautions Michael Ngoo for unsporting behaviour.68:41
Free kick awarded for a foul by Michael Ngoo on Paul McGowan.67:12
Danny Wilson challenges Esmael Goncalves unfairly and gives away a free kick. Free kick taken by David van Zanten.65:14
Assist on the goal came from Esmael Goncalves.65:14 Goal scored
Goal! - Conor Newton - St Mirren 3 - 1 Hearts Conor Newton gets on the score sheet with a goal from the edge of the penalty area to the bottom right corner of the goal. St Mirren 3-1 Hearts.64:46
Darren Barr challenges Paul McGowan unfairly and gives away a free kick. Paul McGowan takes the direct free kick.64:18
Unfair challenge on Steven Thompson by Andy Webster results in a free kick. Free kick taken by Paul Dummett.63:07
Craig Samson takes the free kick.63:07 Substitution
Substitution Arvydas Novikovas joins the action as a substitute, replacing Jamie Walker.63:07
Free kick awarded for an unfair challenge on Jim Goodwin by Ryan Stevenson.59:08
The offside flag is raised against Steven Thompson. Danny Wilson takes the indirect free kick.56:48
Paul McGowan has an effort at goal from just outside the box which goes wide of the left-hand post.56:10
Corner taken by Gary Teale from the right by-line.54:55
Mehdi Taouil takes a shot. Comfortable save by Craig Samson.52:53
Inswinging corner taken left-footed by Kevin McHattie from the right by-line, Michael Ngoo has a headed effort from close range and clears the bar.52:10
Jamie Walker fouled by David van Zanten, the ref awards a free kick. Free kick crossed left-footed by Kevin McHattie from left wing.52:00
Paul McGowan concedes a free kick for a foul on Mehdi Taouil. Free kick taken by Mehdi Taouil.50:31
Jamie Walker has an effort at goal from outside the penalty box which goes wide right of the target.48:16
Kevin McHattie takes the inswinging corner, Marc McAusland manages to make a clearance. Corner taken by Kevin McHattie from the right by-line, clearance made by Gary Teale.45:52
Paul Dummett provided the assist for the goal.45:52 Goal scored
Goal! - Steven Thompson - St Mirren 2 - 1 Hearts Steven Thompson grabs a goal from deep inside the penalty box to the top left corner of the goal. St Mirren 2-1 Hearts.45:01
The second half has started.45:00 +1:25 Half time
Half Time It is the end of the first-half.45:00 +0:57
The assistant referee flags for offside against Esmael Goncalves. Jamie MacDonald takes the indirect free kick.44:20
Michael Ngoo takes a shot from just outside the penalty area which clears the crossbar.43:52
The offside flag is raised against Esmael Goncalves. Jamie MacDonald restarts play with the free kick.43:07
The assistant referee flags for offside against Gary Teale. Jamie MacDonald takes the free kick.39:37
John Sutton is flagged offside by the assistant referee. Craig Samson restarts play with the free kick.38:15
John McGinn concedes a free kick for a foul on Ryan Stevenson. The ball is sent over by Kevin McHattie, John Sutton has an effort at goal from just outside the box which goes wide of the right-hand upright.38:15 Booking
Booking Esmael Goncalves shown a yellow card.36:41
Gary Teale provided the assist for the goal.36:41 Goal scored
Goal! - Esmael Goncalves - St Mirren 1 - 1 Hearts Esmael Goncalves scores a goal from deep inside the penalty box to the bottom right corner of the goal. St Mirren 1-1 Hearts.35:42
The referee blows for offside against Esmael Goncalves. Andy Webster takes the indirect free kick.32:53
Michael Ngoo challenges Marc McAusland unfairly and gives away a free kick. Craig Samson restarts play with the free kick.31:54
The ball is sent over by Esmael Goncalves, Headed effort from deep inside the penalty area by Steven Thompson misses to the right of the target.30:45
Inswinging corner taken by John McGinn from the right by-line played to the near post, clearance made by Darren Barr. Inswinging corner taken by John McGinn, save by Jamie MacDonald.30:05
A cross is delivered by Mehdi Taouil.28:39
Michael Ngoo concedes a free kick for a foul on Marc McAusland. Craig Samson takes the free kick.27:37
Jim Goodwin is penalised for handball and concedes a free kick. Kevin McHattie crosses the ball from the free kick left-footed from right channel, Craig Samson makes a save.27:05
Free kick awarded for an unfair challenge on Ryan Stevenson by John McGinn. Jamie MacDonald takes the free kick.26:13
Dylan McGowan concedes a free kick for a foul on Esmael Goncalves. Jim Goodwin takes the free kick.25:34
Corner taken by Jamie Walker, save by Craig Samson.25:11
Esmael Goncalves takes a shot. Save by Jamie MacDonald.24:45
Michael Ngoo concedes a free kick for a foul on Jim Goodwin. Free kick taken by Craig Samson.23:41
Free kick awarded for a foul by Marc McAusland on Jamie Walker. Free kick crossed right-footed by Jamie Walker, save made by Craig Samson.23:03
Free kick awarded for a foul by John McGinn on John Sutton. Free kick taken by Kevin McHattie.20:51
John Sutton has a headed effort at goal from close in that hits the post.20:12
The referee blows for offside against Esmael Goncalves. Free kick taken by Jamie MacDonald.18:29
Darren Barr has an effort at goal from just outside the box which goes wide of the right-hand post.17:59
Steven Thompson concedes a free kick for a foul on Danny Wilson. Kevin McHattie restarts play with the free kick.16:41
Free kick awarded for a foul by Danny Wilson on Steven Thompson. Jim Goodwin takes the free kick.14:52
Foul by David van Zanten on Kevin McHattie, free kick awarded. Jamie MacDonald restarts play with the free kick.11:06
Ryan Stevenson fouled by Paul McGowan, the ref awards a free kick. Kevin McHattie takes the direct free kick. The official flags Steven Thompson offside. Jamie MacDonald takes the indirect free kick.9:18 Goal scored
Goal! - Ryan Stevenson - St Mirren 0 - 1 Hearts Ryan Stevenson scores a goal from inside the area to the bottom left corner of the goal. St Mirren 0-1 Hearts.8:01
Shot from just outside the box by Paul McGowan misses to the left of the goal.6:57
David van Zanten challenges Jamie Walker unfairly and gives away a free kick. Kevin McHattie restarts play with the free kick.4:12
Esmael Goncalves fouled by Dylan McGowan, the ref awards a free kick. Free kick taken by Jim Goodwin.2:48
Foul by Paul McGowan on Ryan Stevenson, free kick awarded. Free kick taken by John Sutton.1:37
The referee blows for offside against Steven Thompson. Indirect free kick taken by Andy Webster.0:00
The referee gets the game underway.
Live data and text provided by our data suppliers