Francisco Sandaza scored twice as St Johnstone saw off Kilmarnock and moved to within two points of third place in the Scottish Premier League.
Saints opened the scoring on 25 minutes when Sandaza nodded in after Dave McKay's effort was cleared.
Sandaza doubled his tally in first-half injury time, powering in a header from Liam Craig's swirling corner.
Kilmarnock's best chance came when Paul Heffernan's volley was well saved by Peter Enckleman.
With Sandaza making it 12 goals in 16 starts, the Perth club ended a miserable run of home results having lost their previous three matches at McDiarmid Park.
Kilmarnock's James Dayton used the strong wind to his advantage with a curling corner that had Enckelman flapping early on.
With the visitors on top, Gary Harkins was unlucky with a drive that was deflected over the crossbar by defender Steven Anderson.
Heffernan was next to have a go for Kilmarnock, taking a pass from Dean Shiels and stinging Enckelman's palms with a vicious strike.
Sandaza tested Killie keeper Cammy Bell with a low shot after 17 minutes and Manuel Pascali then produced a brilliant tackle to deny the in-form Spaniard after great wing play from Chris Millar.
Craig's long-range drive was then batted away by Bell before the breakthrough goal arrived.
Jody Morris's corner was met by Mackay, whose shot was blocked on the line by Liam Kelly, but Sandaza was quickest to react as he buried the rebound.
Kilmarnock almost equalised on 30 minutes when Danny Racchi's long-range drive was tipped onto the post by Enckelman and there was a strong claim for a penalty when Dayton's shot appeared to be blocked by David McCracken's arm.
However, St Johnstone doubled their advantage of the stroke of half-time when Sandaza powered home Craig's corner from close range.
St Johnstone had the first chance of the second half when Marcus Haber raced down the right and smashed a shot off the outside of the post.
Millar's 20-yard drive was then deflected wide by Pascali and James Fowler cleared off the line on 55 minutes after Bell parried another strike from Haber.
Kilmarnock's best chance to get back into the game fell to Heffernan but his volley was brilliantly tipped over by Enckelman on 63 minutes.
Enckelman also punched Liam Kelly's dipping effort to safety but the Saints held on to move three points clear of fifth-placed Hearts.
- 01 Enckelman
- 02 MacKay
- 03 Davidson (Maybury - 79' )
- 06 Anderson
- 18 McCracken
- 04 Morris
- 07 Millar (Finnigan - 72' )
- 08 Davidson Booked
- 10 Craig
- 21 Sandaza (Moon - 81' )
- 23 Haber
- 15 Mannus
- 12 Maybury
- 31 Moffat
- 14 Moon
- 29 McIntosh
- 39 Gray
- 19 Finnigan
- 01 Bell
- 03 Hay Booked
- 04 Fowler
- 23 McKeown (Racchi - 24' )
- 88 Sissoko
- 08 Kelly
- 10 Dayton (Silva - 65' )
- 11 Harkins (Kennedy - 75' )
- 20 Shiels
- 29 Pascali
- 14 Heffernan
- 53 Jaakkola
- 13 Kroca
- 26 Pursehouse
- 28 Fisher
- 07 Silva
- 22 Racchi
- 33 Kennedy
Live Text Commentary
Full Time The referee signals the end of the game.90:00 +0:50
Free kick taken by David MacKay.90:00 +0:50 Booking
Booking The referee shows Garry Hay a yellow card for unsporting behaviour.90:00 +0:44
Free kick awarded for a foul by Garry Hay on Carl Finnigan.88:09
Free kick awarded for an unfair challenge on Danny Racchi by David McCracken. Danny Racchi takes the direct free kick.86:48
Carl Finnigan gives away a free kick for an unfair challenge on Dean Shiels. Dean Shiels shoots direct from the free kick, save made by Peter Enckelman.85:47
The ball is sent over by James Fowler, David MacKay gets a block in. Corner from the left by-line taken by Dean Shiels, Headed effort from inside the area by Manuel Pascali misses to the left of the target.85:06
Kevin Moon gives away a free kick for an unfair challenge on Matthew Kennedy. Liam Kelly restarts play with the free kick.84:48
Unfair challenge on Danny Racchi by Kevin Moon results in a free kick. Direct free kick taken by Danny Racchi.84:09
The referee blows for offside. Peter Enckelman takes the indirect free kick.83:37
Dean Shiels fouled by David McCracken, the ref awards a free kick. Free kick taken by Dean Shiels.82:39
Manuel Pascali gives away a free kick for an unfair challenge on Murray Davidson. Direct free kick taken by David MacKay.81:42
Corner taken right-footed by Matthew Kennedy, Danny Racchi produces a right-footed shot from just outside the penalty box that misses to the left of the target.80:36 Substitution
Substitution Kevin Moon replaces Francisco Sandaza.78:57 Substitution
Substitution (St Johnstone) makes a substitution, with Alan Maybury coming on for Callum Davidson.76:04
Centre by Garry Hay,74:57 Substitution
Substitution Matthew Kennedy replaces Gary Harkins.74:11
Outswinging corner taken right-footed by Danny Racchi from the right by-line, Callum Davidson manages to make a clearance.71:43 Substitution
Substitution Carl Finnigan joins the action as a substitute, replacing Chris Millar.66:30
Danny Racchi fires a strike on goal direct from the free kick.
Booking Murray Davidson is shown a yellow card for unsporting behaviour.66:17
Foul by Murray Davidson on David Silva, free kick awarded.65:34
Liam Kelly takes a shot. Save by Peter Enckelman. Corner from the left by-line taken by Dean Shiels, clearance by Francisco Sandaza.64:32
Outswinging corner taken from the right by-line by Dean Shiels, Murray Davidson manages to make a clearance.64:32 Substitution
Substitution David Silva joins the action as a substitute, replacing James Dayton.64:32
The ball is delivered by James Dayton, Callum Davidson makes a clearance.63:28
Garry Hay sends in a cross, Peter Enckelman makes a save.62:54
Corner taken by Dean Shiels from the left by-line, Callum Davidson manages to make a clearance.61:59
Dean Shiels crosses the ball, Paul Heffernan takes a shot. Save made by Peter Enckelman. James Dayton decides to take a short corner.58:41
Effort on goal by Dean Shiels from inside the penalty box misses to the right of the target.57:25
Francisco Sandaza takes a shot. James Fowler gets a block in. Corner from the right by-line taken by Liam Craig, free kick awarded for an unfair challenge on James Dayton by Chris Millar. Cameron Bell restarts play with the free kick.56:37
Liam Craig fouled by Dean Shiels, the ref awards a free kick. Free kick taken by Callum Davidson.56:05
Liam Kelly takes a shot and cleared the goal.54:56
Dean Shiels fouled by Chris Millar, the ref awards a free kick. Garry Hay takes the free kick.54:03
Marcus Haber has an effort at goal from 12 yards. Cameron Bell makes a save.51:48
Dean Shiels crosses the ball, clearance made by Steven Anderson.48:49
Liam Craig takes a shot. Blocked by Liam Kelly. Inswinging corner taken left-footed by Liam Craig, Gary Harkins makes a clearance.48:17
Marcus Haber takes a shot.47:13
The referee gives a free kick against Dean Shiels for handball. Peter Enckelman takes the direct free kick.45:01
The match restarts for the second half.45:00 +1:56 Half time
Half Time The ref blows to end the first period.45:00 +1:00
The assist for the goal came from Liam Craig.45:00 +1:00 Goal scored
Goal! - Francisco Sandaza - St J'stone 2 - 0 Kilmarnock Francisco Sandaza finds the back of the net with a headed goal from inside the six-yard box. St Johnstone 2-0 Kilmarnock.45:00 +0:45
Corner from the right by-line taken by Liam Craig,45:00 +0:21
The assistant referee flags for offside against Paul Heffernan. Peter Enckelman takes the indirect free kick.44:26
Francisco Sandaza challenges Liam Kelly unfairly and gives away a free kick. James Fowler takes the free kick.43:37
Murray Davidson challenges Liam Kelly unfairly and gives away a free kick. Free kick taken by James Dayton.43:15
David McCracken gives away a free kick for an unfair challenge on Mohamadou Sissoko. Free kick taken by Mohamadou Sissoko.43:09
Callum Davidson delivers the ball.42:34
The ball is delivered by Chris Millar, Danny Racchi manages to make a clearance. Corner taken by Liam Craig, save made by Cameron Bell.41:52
Jody Morris takes a shot from just outside the penalty area which clears the crossbar.41:13
James Dayton challenges Liam Craig unfairly and gives away a free kick. Free kick crossed left-footed by Liam Craig from left channel.39:16
Effort from 18 yards by Francisco Sandaza.38:04
Free kick awarded for a foul by Jody Morris on Dean Shiels. Dean Shiels restarts play with the free kick.37:44
The ball is crossed by Francisco Sandaza.36:10
James Dayton takes the inswinging corner, Headed effort from deep inside the penalty area by Manuel Pascali misses to the left of the goal.35:16
Dean Shiels produces a cross, clearance by Liam Craig.33:32
Liam Kelly takes a shot. Save made by Peter Enckelman.33:07
Callum Davidson sends in a cross, Cameron Bell makes a save.32:28
Free kick awarded for an unfair challenge on Marcus Haber by Mohamadou Sissoko. The free kick is delivered left-footed by Callum Davidson from right channel, Liam Kelly manages to make a clearance.31:42
Liam Kelly takes a shot. Save by Peter Enckelman.31:22
Free kick awarded for a foul by Murray Davidson on James Dayton. Free kick crossed by Dean Shiels, Murray Davidson makes a clearance.30:33
James Dayton takes a shot. David McCracken gets a block in.28:44
Effort from outside the box by Danny Racchi hits the post.25:01 Goal scored
Goal! - Francisco Sandaza - St J'stone 1 - 0 Kilmarnock Francisco Sandaza finds the back of the net with a goal from inside the six-yard box to the bottom left corner of the goal. St Johnstone 1-0 Kilmarnock.24:41
David MacKay takes a shot. Blocked by Danny Racchi.22:41
Short corner worked by Jody Morris.22:41 Substitution
Substitution Rory McKeown leaves the field to be replaced by Danny Racchi.22:41
Liam Craig takes a shot. Save by Cameron Bell. The ball is sent over by David MacKay, Manuel Pascali makes a clearance.21:45
Inswinging corner taken right-footed by Dean Shiels, save by Peter Enckelman.20:57
The ball is sent over by David MacKay.20:25
Jody Morris is adjudged to have handled the ball. Cameron Bell restarts play with the free kick.19:31
Chris Millar crosses the ball, Rory McKeown makes a clearance. Corner taken right-footed by Jody Morris from the left by-line, Liam Kelly makes a clearance.16:27
Francisco Sandaza takes a shot. Save by Cameron Bell.15:49
The ball is delivered by James Fowler, save by Peter Enckelman.14:42
Murray Davidson takes a shot. Save by Cameron Bell.13:53
Marcus Haber is flagged offside by the assistant referee. Mohamadou Sissoko restarts play with the free kick.13:05
Free kick awarded for a foul by Francisco Sandaza on Liam Kelly. Free kick taken by Mohamadou Sissoko.10:46
Gary Harkins concedes a free kick for a foul on Liam Craig. Steven Anderson takes the direct free kick.9:08
Paul Heffernan takes the inswinging corner, Unfair challenge on Steven Anderson by Mohamadou Sissoko results in a free kick. Free kick taken by Peter Enckelman.7:44
The ball is crossed by James Fowler, Steven Anderson makes a clearance.6:00
Dean Shiels produces a cross, Peter Enckelman makes a save.4:55
Gary Harkins gives away a free kick for an unfair challenge on Marcus Haber. The free kick is delivered left-footed by Liam Craig from right wing, clearance by Gary Harkins.2:19
Centre by Rory McKeown, Peter Enckelman makes a save.1:38
The ball is sent over by James Dayton, Callum Davidson gets a block in. Inswinging corner taken left-footed by James Dayton from the right by-line.0:00
The match has kicked off.
Live data and text provided by our data suppliers