St Johnstone underlined their top-six credentials with a hard-fought, if forgettable, win over St Mirren.
In the first half David McCracken headed over, while Conor Newton had a shot saved for St Mirren.
Rowan Vine broke the deadlock in 51 minutes, knocking the ball home from a corner amid poor defending.
A Frazer Wright header and two efforts from Gregory Tade came back off the woodwork as St Johnstone pressed the visitors back to grind out the result.
A home game for a team one point off a European place against opponents one place off the bottom of the Scottish Premier League suggested a straightforward win for St Johnstone.
But, so tight is the SPL this season, that the outcome of this match was hard to predict at kick-off. However, by midway through the opening half a nagging feeling had developed - this was going to end goalless.
That Vine managed to knock the ball over the line from Mehdi Abeid's corner was a welcome surprise to most observers at McDiarmid Park.
A close league, of course, is not necessarily a signifier of the quality of football on offer and this match only served to underscore that hazardous correlation.
Referee Steven McLean had booked two St Johnstone players in the first four minutes - Rowan Vine for a rash challenge on Marc McAusland and Paddy Cregg for a trip on St Mirren playmaker Paul McGowan.
The tone had been set. There were chances of a sort in the first half but they merely interrupted the fouls and misplaced passes.
McCracken powered a header over Craig Samson's crossbar from six yards, St Johnstone's first chance, and Vine thumped a 20-yard free-kick straight at Samson after 17 minutes.
St Mirren were being prompted by John McGinn and Paul McGowan in midfield and, in one of the few occasions they breached the home defence, Newton hammered a 22-yard shot that had St Johnstone goalie Alan Mannus flying to his right to save.
Mannus ran off his line to head clear in 27 minutes and did so - but only as far as Thompson who knocked the ball over the bar from 22 yards instead of lobbing it into the net.
St Mirren manager Danny Lennon would have been unhappy at the powder-puff effort on goal from 12 yards by Esmael Goncalves after he was set up by Thompson.
And he would have been miffed all the more when the home side were awarded a corner that looked like it should have gone the other way.
Then, when his defence, given several chances to do so, failed to deal with a routine corner by Abeid, Vine pounced to knock it home.
The Perth Saints should have gone two ahead when Wright headed Murray Davidson's inviting cross from the right off the crossbar.
Perhaps embarrassed by his earlier attempt, a pumped-up Goncalves blazed wide from the same position as the visitors pushed for a leveller.
Steven Anderson let fly with a shot from 25 yards that sailed wide and substitute Tade hit the bar with a header from close range.
St Mirren huffed and puffed, their final ball often their weakest point.
And when sub Lewis Guy was foiled in the six-yard box, smothered by blue shirts on the point of firing home, it typified the Buddies' day.
In the final minute of injury time Tade hit the post with a header, the third time the Perth Saints had hit the woodwork in the second half, exaggerating the excitement on offer.
- 01 Mannus
- 03 Davidson
- 05 Wright
- 06 Anderson
- 18 McCracken
- 04 Cregg Booked
- 08 Davidson
- 10 Craig
- 21 Abeid (Tade - 61' )
- 17 MacLean Booked (Hasselbaink - 82' )
- 23 Vine Booked
- 15 Tuffey
- 02 MacKay
- 33 Scobbie
- 14 Gwion Edwards
- 16 Doughty
- 09 Tade
- 11 Hasselbaink
- 01 Samson
- 02 van Zanten (Guy - 70' )
- 03 Dummett
- 14 McAusland Booked
- 06 Goodwin
- 10 McGowan
- 17 Mclean
- 24 Newton
- 09 Thompson
- 29 J McGinn (Carey - 81' )
- 77 Goncalves
- 16 Adam
- 05 Mair
- 23 Barron
- 11 Carey
- 07 Imrie
- 19 Parkin
- 27 Guy
Live Text Commentary
Full Time The referee blows for the end of the match.90:00 +2:51
Gregory Tade takes a shot. Save made by Craig Samson.90:00 +1:41
Paul Dummett has an effort from just inside the box that misses to the left of the target.88:44
Free kick awarded for a foul by Nigel Hasselbaink on Jim Goodwin. Direct free kick taken by Craig Samson.83:55
Corner taken by Liam Craig from the left by-line, Gregory Tade takes a shot.83:15
Jim Goodwin gives away a free kick for an unfair challenge on Nigel Hasselbaink. Patrick Cregg takes the free kick.81:25 Substitution
Substitution Nigel Hasselbaink comes on in place of Steven MacLean.80:55 Substitution
Substitution Graham Carey is brought on as a substitute for John McGinn.75:39
Shot by Steven Anderson from deep inside the penalty area misses wide to the left of the target.74:47
Direct free kick taken by Rowan Vine.74:47 Booking
Booking Marc McAusland is cautioned.74:37
Free kick awarded for an unfair challenge on Gregory Tade by Marc McAusland.69:25 Substitution
Substitution Lewis Guy comes on in place of David van Zanten.68:26
Liam Craig takes the outswinging corner, Steven MacLean has an effort at goal from deep inside the area missing to the left of the target.66:55
Esmael Goncalves produces a right-footed shot from deep inside the penalty box which goes wide of the right-hand upright.65:38
Unfair challenge on Steven Anderson by John McGinn results in a free kick. Liam Craig takes the direct free kick.64:41
Free kick awarded for a foul by Gregory Tade on Jim Goodwin. Craig Samson takes the direct free kick.64:03
David van Zanten concedes a free kick for a foul on Rowan Vine. Callum Davidson restarts play with the free kick.63:22
Inswinging corner taken right-footed by Conor Newton from the left by-line, Alan Mannus makes a save.62:44
David McCracken gives away a free kick for an unfair challenge on Esmael Goncalves. Direct free kick taken by Jim Goodwin.
Effort from deep inside the area by Gregory Tade misses to the left of the target.60:13 Substitution
Substitution Mehdi Abeid leaves the field to be replaced by Gregory Tade.59:43
Close range header by Murray Davidson goes over the crossbar.59:05
Corner taken left-footed by Liam Craig, Craig Samson makes a save.57:58
John McGinn fouled by Murray Davidson, the ref awards a free kick. Direct free kick taken by Paul Dummett.56:16
Steven Anderson gives away a free kick for an unfair challenge on Paul Dummett. Conor Newton takes the free kick.54:31
John McGinn challenges Rowan Vine unfairly and gives away a free kick. Liam Craig takes the free kick.53:28
Kenny McLean fouled by Mehdi Abeid, the ref awards a free kick. Paul Dummett restarts play with the free kick.51:44 Goal scored
Goal! - Rowan Vine - St J'stone 1 - 0 St Mirren Rowan Vine grabs a goal from inside the penalty area to the bottom left corner of the goal. St Johnstone 1-0 St Mirren.50:56
Corner taken right-footed by Mehdi Abeid from the left by-line,49:31
Steven Thompson takes a shot. Save made by Alan Mannus.46:19
Frazer Wright concedes a free kick for a foul on Paul McGowan. Free kick taken by Kenny McLean.45:01
The second half begins.45:00 +0:07 Half time
Half Time The half-time whistle blows.44:15
Short corner taken by Mehdi Abeid from the left by-line, clearance made by Kenny McLean.43:41
Inswinging corner taken by Conor Newton from the left by-line, save by Alan Mannus.43:12
Headed effort from inside the area by Jim Goodwin misses to the left of the target.42:00 Booking
Booking Steven MacLean goes into the book for unsporting behaviour.38:23
Steven MacLean is ruled offside. Free kick taken by Craig Samson.37:38
Free kick awarded for a foul by Paul Dummett on Rowan Vine. Direct free kick taken by Liam Craig.35:33
Corner taken short by Mehdi Abeid.35:13
Shot from just outside the penalty area by Callum Davidson misses to the left of the target.34:31
John McGinn challenges Patrick Cregg unfairly and gives away a free kick. Direct free kick taken by Alan Mannus.32:35
Paul McGowan challenges Patrick Cregg unfairly and gives away a free kick. Free kick taken by Alan Mannus.29:35
Inswinging corner taken by Liam Craig, clearance made by Kenny McLean.29:20
Liam Craig takes a shot. Save made by Craig Samson.27:54
Inswinging corner taken from the left by-line by Conor Newton, clearance by Murray Davidson.27:30
Inswinging corner taken left-footed by Kenny McLean from the right by-line, clearance by Murray Davidson.26:41
Effort on goal by Steven Thompson from just outside the area goes harmlessly over the target.24:12
Frazer Wright fouled by Steven Thompson, the ref awards a free kick. Alan Mannus takes the direct free kick.23:50
Steven Anderson gives away a free kick for an unfair challenge on Esmael Goncalves. Paul Dummett takes the direct free kick.19:25
Conor Newton takes a shot. Save by Alan Mannus.17:54
Steven Thompson is caught offside. Alan Mannus takes the free kick.15:00
Mehdi Abeid fouled by Marc McAusland, the ref awards a free kick. Strike on goal comes in from Rowan Vine from the free kick, save made by Craig Samson.14:02
Murray Davidson gives away a free kick for an unfair challenge on Kenny McLean. Jim Goodwin takes the direct free kick.13:08
John McGinn takes the inswinging corner, Patrick Cregg manages to make a clearance.11:51
John McGinn takes the inswinging corner, clearance by Liam Craig.10:41
Free kick awarded for an unfair challenge on Paul McGowan by Murray Davidson. Free kick taken by Jim Goodwin.9:31
Esmael Goncalves gives away a free kick for an unfair challenge on Frazer Wright. Free kick taken by Callum Davidson.8:03
The referee penalises Conor Newton for handball. Mehdi Abeid takes the free kick.7:23
Shot from just outside the penalty area by John McGinn misses to the left of the target.6:03
Header from deep inside the area by David McCracken goes harmlessly over the crossbar.5:27
Free kick awarded for a foul by Jim Goodwin on Steven MacLean. Direct free kick taken by Liam Craig.3:57
Direct free kick taken by Jim Goodwin.3:57 Booking
Booking Patrick Cregg receives a yellow card.3:36
Paul McGowan fouled by Patrick Cregg, the ref awards a free kick.1:50
Direct free kick taken by Craig Samson.1:50 Booking
Booking Rowan Vine is cautioned.1:13
Free kick awarded for a foul by Rowan Vine on Marc McAusland.0:00
The match begins.
Live data and text provided by our data suppliers