St Mirren came from behind to beat Kilmarnock as the Ayrshire side's hopes of finishing in the Scottish Premier League's top six ended.
Dieter Van Tornhout netted the opener for Killie but Steven Thompson slid home Saints' leveller.
The similarly-named Steven Thomson headed the hosts ahead after the break, Nigel Hasselbaink struck a third and Thompson then fired his second.
Dean Shiels pulled one back for the visitors late on.
The result, allied to Hearts' win against Aberdeen, creates an eight-point gap between sixth-place Hearts and Kilmarnock, with one round of fixtures left before the split.
St Mirren's first league win since December takes them above the Dons and to within two points of Kilmarnock.
Killie, who had substitute Liam Kelly back in the squad for the first time since the death of his father, started positively and Gary Harkins hammered a shot against the outside of the post in an early attack.
The visitors continued to press and moved into the lead when Harkins and Garry Hay combined to set up Van Tornhout on the edge of the area and the Belgian set himself before firing past Craig Samson.
Van Tornhout was less successful with his next attempt and St Mirren responded with their equaliser.
The two Stevens combined as the midfielder centred low for striker Thompson to convert.
The Buddies set about getting into the lead and Hasselbaink turned on the edge of the box before curling an excellent shot towards goal that brought out the best in Killie goalkeeper Cammy Bell.
Bell then blocked another effort by Thompson after the former Scotland player had connected well with Hasselbaink's cross.
St Mirren continued to be in the ascendancy for the remainder of the first half but suffered an injury blow when Graham Carey limped off to be replaced by Dougie Imrie.
The home side began the second half as they had ended the first and gained the advantage on 61 minutes when the diminutive Thomson nodded Imrie's cross home from eight yards.
And Hasselbaink got on the scoresheet after brushing off the challenge of Mahamadou Sissoko and rolling the ball under Bell, referee Brian Colvin disinterested in the Killie defender's claim for a foul.
Bell blocked a well-struck Imrie shot before the winger set-up Thompson for his second, the striker holding off a defender as he planted a shot into the bottom corner from the edge of the box.
Kelly received warm applause from both sets of fans as he came on to replace James Fowler.
And the midfielder was involved in Killie's consolation goal with a pass to Shiels, who turned and battered a shot high past Samson from 20 yards.
Live Text Commentary
Full Time The match has reached full-time.90:00 +3:24
Inswinging corner taken left-footed by James Dayton played to the near post, Dieter Van Tornhout takes a shot. Save made by Craig Samson.90:00 +3:10
The ball is sent over by Ben Gordon, Jeroen Tesselaar makes a clearance.90:00 +2:16
Paul McGowan takes a shot. Save made by Cameron Bell.88:05
Assist on the goal came from Liam Kelly.88:05 Goal scored
Goal! - Dean Shiels - St Mirren 4 - 2 Kilmarnock Dean Shiels scores a goal from just outside the penalty box to the top left corner of the goal. St Mirren 4-2 Kilmarnock.87:13
A cross is delivered by Lewis Toshney, Craig Samson makes a clearance.86:25
Corner from the left by-line taken by James Fowler, clearance made by Darren McGregor.86:25 Substitution
Substitution Liam Kelly replaces James Fowler.86:11
Lewis Toshney delivers the ball, clearance made by David van Zanten.84:37
Centre by James Dayton, clearance made by Darren McGregor.82:59
Douglas Imrie provided the assist for the goal.82:59 Goal scored
Goal! - Steven Thompson - St Mirren 4 - 1 Kilmarnock Steven Thompson grabs a goal from outside the box to the bottom right corner of the goal. St Mirren 4-1 Kilmarnock.80:58
The ball is delivered by Gary Harkins, Mohamadou Sissoko has an effort at goal from deep inside the area missing to the left of the target.80:25 Substitution
Substitution Danny Racchi replaces Garry Hay.80:01
Corner taken right-footed by Dean Shiels from the left by-line, Darren McGregor manages to make a clearance.78:29
The ball is sent over by Gary Harkins.77:43
Free kick awarded for an unfair challenge on James Fowler by Douglas Imrie. Lewis Toshney takes the direct free kick.77:25
The ball is swung over by Douglas Imrie, Ben Gordon makes a clearance.75:08
Mohamadou Sissoko gives away a free kick for an unfair challenge on Steven Thompson. Free kick taken by Craig Samson.
The ball is crossed by Dean Shiels.74:30
Corner taken short by James Dayton.74:12
The referee penalises Hugh Murray for handball. Mohamadou Sissoko takes the direct free kick.73:56
Steven Thompson delivers the ball, clearance made by James Fowler.72:44
Dean Shiels gives away a free kick for an unfair challenge on Marc McAusland. Craig Samson takes the direct free kick.72:25
Douglas Imrie takes a shot. Save by Cameron Bell.70:46 Substitution
Substitution Darren McGregor is brought on as a substitute for Nigel Hasselbaink.69:05
Free kick awarded for a foul by David van Zanten on James Dayton. Dean Shiels takes the free kick.67:49
The ball is swung over by Dean Shiels.66:55
Foul by Lee Mair on Dieter Van Tornhout, free kick awarded. Direct strike on goal from the free kick comes in from James Dayton.66:15 Substitution
Substitution James Dayton replaces Lee Johnson.65:19 Goal scored
Goal! - Nigel Hasselbaink - St Mirren 3 - 1 Kilmarnock Nigel Hasselbaink grabs a goal from the edge of the penalty area low into the middle of the goal. St Mirren 3-1 Kilmarnock.64:01
Free kick awarded for an unfair challenge on Gary Harkins by Lee Mair. Free kick taken by Lee Johnson.63:47
Unfair challenge on Lewis Toshney by Nigel Hasselbaink results in a free kick. Mohamadou Sissoko takes the direct free kick.61:17
Foul by Hugh Murray on Dean Shiels, free kick awarded. Dean Shiels restarts play with the free kick.60:09
Assist on the goal came from Douglas Imrie.60:09 Goal scored
Goal! - Steven Thomson - St Mirren 2 - 1 Kilmarnock Steven Thomson scores a headed goal from inside the six-yard box. St Mirren 2-1 Kilmarnock.59:55
The ball is delivered by Douglas Imrie,59:29
Foul by Dieter Van Tornhout on Douglas Imrie, free kick awarded. Jeroen Tesselaar takes the free kick.58:03 Substitution
Substitution Hugh Murray joins the action as a substitute, replacing Jim Goodwin.56:46
The official flags Lee Mair offside. Free kick taken by Cameron Bell.56:09
Unfair challenge on Douglas Imrie by Lewis Toshney results in a free kick. Douglas Imrie delivers the ball from the free kick left-footed from left wing, save made by Cameron Bell.55:30
The ball is sent over by Ben Gordon, clearance by Paul McGowan.53:35
Garry Hay takes a shot from long distance which goes wide of the right-hand upright.53:16
The ball is sent over by Douglas Imrie, clearance by Lee Johnson.49:17
Centre by Douglas Imrie.47:45
Free kick awarded for an unfair challenge on Douglas Imrie by Mohamadou Sissoko. Douglas Imrie crosses the ball in from the free kick, clearance by Mohamadou Sissoko.47:01
The offside flag is raised against Douglas Imrie. Direct free kick taken by Cameron Bell.45:41
David van Zanten crosses the ball.45:01
The referee gets the second half underway.45:00 +2:22 Half time
Half Time The match has reached half-time.45:00 +1:40
Ben Gordon produces a cross, clearance made by Jim Goodwin.45:00 +0:44
Free kick awarded for an unfair challenge on Gary Harkins by Jeroen Tesselaar. Gary Harkins takes the free kick.45:00 +0:23
Nigel Hasselbaink takes a shot. Save by Cameron Bell.43:19 Substitution
Substitution Douglas Imrie is brought on as a substitute for Graham Carey.42:27
Unfair challenge on Paul McGowan by Lee Johnson results in a free kick. Direct free kick taken by Lee Mair.41:17
Lewis Toshney produces a cross.40:49
David van Zanten delivers the ball, save made by Cameron Bell.39:31
Dean Shiels takes the inswinging corner, clearance made by Lee Mair.37:09
A cross is delivered by Lewis Toshney.34:09
The assistant referee signals for offside against Ben Gordon. Craig Samson takes the free kick.33:40
Paul McGowan delivers the ball, clearance by Cameron Bell.33:07
The ball is sent over by Ben Gordon.32:57
Lewis Toshney crosses the ball, clearance made by Jeroen Tesselaar.32:33
Ben Gordon crosses the ball, Lee Mair manages to make a clearance.31:48
Steven Thompson crosses the ball.31:29
Paul McGowan fouled by James Fowler, the ref awards a free kick. David van Zanten takes the direct free kick.30:31
Outswinging corner taken by Graham Carey, Michael Nelson manages to make a clearance.30:17
Effort on goal by Nigel Hasselbaink from 20 yards. Save made by Cameron Bell.27:45
Free kick awarded for an unfair challenge on Steven Thomson by Garry Hay. Free kick taken by Lee Mair.27:26
A cross is delivered by Graham Carey, save by Cameron Bell.26:47
Nigel Hasselbaink is adjudged to have handled the ball. Direct free kick taken by Lee Johnson.25:04
Steven Thomson is penalised for handball and concedes a free kick. Craig Samson takes the free kick.23:08
Assist on the goal came from Steven Thomson.23:08 Goal scored
Goal! - Steven Thompson - St Mirren 1 - 1 Kilmarnock Steven Thompson fires in a goal from inside the box to the bottom left corner of the goal. St Mirren 1-1 Kilmarnock.21:58
Dieter Van Tornhout is flagged offside by the assistant referee. Marc McAusland takes the free kick.20:53
Effort on goal by Dieter Van Tornhout from just inside the penalty area goes harmlessly over the target.20:44
The ball is delivered by Lewis Toshney, clearance made by Lee Mair.15:07
Free kick awarded for a foul by David van Zanten on James Fowler. Lee Johnson takes the free kick.14:04
Steven Thomson has an effort at goal from just outside the box which goes wide of the right-hand post.12:59
Assist on the goal came from Garry Hay.12:59 Goal scored
Goal! - Dieter Van Tornhout - St Mirren 0 - 1 Kilmarnock Dieter Van Tornhout fires in a goal from the edge of the penalty box to the bottom left corner of the goal. St Mirren 0-1 Kilmarnock.11:48
Graham Carey takes a outswinging corner from the left by-line played to the near post, Dieter Van Tornhout manages to make a clearance.11:15
Michael Nelson gives away a free kick for an unfair challenge on Steven Thompson. David van Zanten restarts play with the free kick.8:18
Centre by Lewis Toshney.6:40
Gary Harkins has a shot on goal from outside the area which misses right.6:10
Jim Goodwin gives away a free kick for an unfair challenge on Garry Hay. Garry Hay restarts play with the free kick.4:48
The assistant referee signals for offside against Dieter Van Tornhout. Craig Samson takes the free kick.0:52
Gary Harkins produces a right-footed shot from just outside the area that hits the post.0:31
Steven Thomson gives away a free kick for an unfair challenge on Dean Shiels. Direct free kick taken by Lee Johnson.0:00
The referee gets the game underway.
Live data and text provided by our data suppliers