St Johnstone recorded five straight league wins for the first time since 1971 with Kilmarnock the latest victims of the Perth side's impressive form.
Murray Davidson scrambled home Saints' opener after Cammy Bell had saved Steven Anderson's header.
The visitors almost levelled when Cillian Sheridan struck the post.
Nigel Hasselbaink netted the home side's second in the 90th minute before James Fowler pulled one back for Killie in injury time.
Steve Lomas's side move up to second in the Scottish Premier League, three points behind Celtic, while Kenny Shiels' Kilmarnock are seventh.
Anderson should perhaps have done better than head wide from Liam Craig's free-kick as the home side sought an early breakthrough.
Craig had a shot blocked by team-mate Gregory Tade before taking the corner that led to the opener.
The delivery was nodded powerfully towards goal by Anderson and, though Bell made the block, the goalkeeper could not prevent Davidson forcing the ball over the line.
Killie came back into the match and Sheridan's free-kick cracked off Saints keeper Alan Mannus's right-hand post shortly before half-time.
Bell denied Davidson a second with a diving save eight mintues after the break and the keeper then blocked an effort from Hasselbaink.
Rowan Vine curled over the Kilmarnock bar and Hasselbaink was then guilty of a glaring miss as Saints sought to make sure of the points.
Tade beat the offside trap and drew Bell before squaring for Hasselbaink but the Dutchman allowed the ball to ricochet off his shin and slip wide of the open goal.
Hasselbaink's frustration continued when his next shot was saved but, after Sheridan's drive stung the palms of Mannus, the Saints forward eventually added his name to scoresheet.
Tade was again the provider with the through pass and Hasselbaink managed to get his strike beyond Bell.
Fowler's deflected effort temporarily gave Kilmarnock hope but St Johnstone saw out the remainder of injury time to emulate the run of five successive league wins last recorded under Willie Ormond's management.
- 01 Mannus
- 02 MacKay
- 05 Wright
- 06 Anderson
- 19 Miller (Scobbie - 66' )
- 07 Millar (Moon - 90' )
- 08 Davidson
- 10 Craig
- 09 Tade
- 11 Hasselbaink Booked
- 23 Vine (Robertson - 79' )
- 15 Tuffey
- 26 Caddis
- 33 Scobbie
- 43 Rodger
- 12 Robertson
- 14 Moon
- 41 Kane
- 01 Bell
- 04 Fowler
- 05 O'Leary
- 06 Nelson
- 23 McKeown Booked
- 26 Pursehouse (McKenzie - 64' )
- 08 Kelly Booked
- 10 Dayton (Heffernan - 56' )
- 11 Harkins (Gross - 79' )
- 29 Pascali
- 12 Sheridan
- 17 Letheren
- 02 Tesselaar
- 18 Johnson
- 09 Gross
- 14 Heffernan
- 15 Perez
- 24 McKenzie
Live Text Commentary
Full Time The game is over, as the referee blows his whistle.90:00 +2:20
Assist on the goal came from Rory McKenzie.90:00 +2:20 Goal scored
Goal! - James Fowler - St J'stone 2 - 1 Kilmarnock James Fowler fires in a goal from just outside the penalty box to the bottom left corner of the goal. St Johnstone 2-1 Kilmarnock.90:00 +0:48
Corner taken short by Liam Craig.90:00 +0:48 Substitution
Substitution Kevin Moon replaces Chris Millar.89:09
Gregory Tade provided the assist for the goal.89:09 Goal scored
Goal! - Nigel Hasselbaink - St J'stone 2 - 0 Kilmarnock Nigel Hasselbaink finds the back of the net with a goal from inside the box to the bottom right corner of the goal. St Johnstone 2-0 Kilmarnock.88:01
Nigel Hasselbaink takes a shot. Save made by Cameron Bell.87:03
Rory McKeown produces a cross, Effort on goal by Rory McKenzie from inside the penalty box misses to the right of the target.85:39
Handball decision goes against Nigel Hasselbaink. Direct free kick taken by Cameron Bell.84:51
Free kick awarded for an unfair challenge on Liam Craig by Manuel Pascali. Alan Mannus takes the direct free kick.83:13
Free kick crossed left-footed by Liam Craig, clearance by Rory McKenzie.83:13 Booking
Booking Rory McKeown goes into the referee's book.83:04
Rory McKeown gives away a free kick for an unfair challenge on Nigel Hasselbaink.82:12
Liam Kelly takes a shot. Clearance made by Frazer Wright. Liam Kelly decides to take a short corner, David MacKay makes a clearance.81:04
The ball is delivered by Liam Craig, Headed effort from deep inside the area by Steven Anderson misses to the right of the target.81:04 Booking
Booking Nigel Hasselbaink receives a caution for unsporting behaviour.80:38 Booking
Booking Liam Kelly shown a yellow card.79:59
Free kick awarded for an unfair challenge on Gregory Tade by Liam Kelly.79:31
Rory McKenzie is ruled offside. The free kick is swung in right-footed by Thomas Scobbie, Liam Kelly makes a clearance.
Substitution David Robertson comes on in place of Rowan Vine.78:19 Substitution
Substitution (Kilmarnock) makes a substitution, with William Gros coming on for Gary Harkins.76:10
The ball is swung over by Paul Heffernan, clearance made by Steven Anderson. Corner taken short by Gary Harkins.75:02
The ball is swung over by Liam Craig, save made by Cameron Bell.73:19
A cross is delivered by Rory McKeown, Steven Anderson makes a clearance.72:05
Liam Craig crosses the ball. The referee blows for offside. Direct free kick taken by Cameron Bell.70:59
Unfair challenge on Ryan O'Leary by Gregory Tade results in a free kick. Direct free kick taken by Ryan O'Leary.69:43
Effort on goal by Liam Kelly from just outside the area goes harmlessly over the target.69:00
Centre by Rory McKenzie, clearance made by Thomas Scobbie. Gary Harkins decides to take a short corner, clearance by Murray Davidson.67:58
Paul Heffernan is ruled offside. Alan Mannus restarts play with the free kick.67:35
Cillian Sheridan takes a shot. Save by Alan Mannus.65:51 Substitution
Substitution Gary Miller goes off and Thomas Scobbie comes on.65:09
Centre by Gary Harkins, save by Alan Mannus.64:43
Gregory Tade concedes a free kick for a foul on James Fowler. Free kick taken by Cameron Bell.63:58 Substitution
Substitution (Kilmarnock) makes a substitution, with Rory McKenzie coming on for Alex Pursehouse.63:19
Liam Craig takes the inswinging corner, Effort on goal by Murray Davidson from just inside the penalty area goes over the target.62:44
Nigel Hasselbaink takes a shot. Cameron Bell makes a save.62:11
Cillian Sheridan takes a shot. Save made by Alan Mannus.61:17
Gregory Tade takes a shot. Nigel Hasselbaink manages to make a clearance.58:01
Murray Davidson challenges Liam Kelly unfairly and gives away a free kick. Direct free kick taken by Liam Kelly.57:39
Rowan Vine takes a shot from just inside the penalty box which clears the crossbar.57:09
Nigel Hasselbaink takes a shot. Save by Cameron Bell.55:40 Substitution
Substitution Paul Heffernan on for James Dayton.55:07
Gregory Tade is caught offside. Cameron Bell takes the direct free kick.52:06
The ball is crossed by Liam Craig, Murray Davidson takes a shot. Cameron Bell makes a save. Murray Davidson produces a left-footed shot from the edge of the area and misses to the left of the goal.49:58
The official flags Rory McKeown offside. Alan Mannus restarts play with the free kick.49:05
The ball is swung over by Manuel Pascali.47:53
James Dayton is ruled offside. Alan Mannus restarts play with the free kick.47:22
Liam Craig produces a left-footed shot from just outside the box that goes wide left of the target.45:58
Chris Millar is caught offside. Direct free kick taken by Cameron Bell.45:01
The referee starts the second half.45:00 +1:30 Half time
Half Time The players leave the pitch at half time.45:00 +0:51
Gary Harkins challenges Rowan Vine unfairly and gives away a free kick. Direct free kick taken by Liam Craig.44:17
Alex Pursehouse takes a shot. Alan Mannus makes a save.42:50
James Fowler fouled by Murray Davidson, the ref awards a free kick. Gary Harkins takes the direct free kick.42:21
Rory McKeown fouled by Nigel Hasselbaink, the ref awards a free kick. Michael Nelson restarts play with the free kick.41:06
Cillian Sheridan produces a right-footed shot from the edge of the box and misses to the right of the target.37:33
Rowan Vine gives away a free kick for an unfair challenge on Gary Harkins. Strike on goal comes in from Cillian Sheridan from the free kick.36:18
Short corner worked by James Dayton, David MacKay manages to make a clearance.34:54
Unfair challenge on Liam Craig by James Fowler results in a free kick. Free kick crossed by Alan Mannus, Alex Pursehouse makes a clearance.32:24
James Fowler fouled by Murray Davidson, the ref awards a free kick. Gary Harkins delivers the ball from the free kick left-footed from left wing. Gary Harkins takes a outswinging corner from the right by-line played to the near post, Frazer Wright manages to make a clearance.32:03
Centre by James Dayton, Liam Craig manages to make a clearance.31:24
Rowan Vine produces a cross, clearance made by Alex Pursehouse.29:19
Steven Anderson provided the assist for the goal.29:19 Goal scored
Goal! - Murray Davidson - St J'stone 1 - 0 Kilmarnock Murray Davidson finds the net with a goal from close range high into the middle of the goal. St Johnstone 1-0 Kilmarnock.28:09
Liam Craig takes a short corner, Steven Anderson takes a shot. Save made by Cameron Bell.27:44
Liam Craig decides to take a short corner, Gary Harkins manages to make a clearance.26:44
Cillian Sheridan crosses the ball, Liam Kelly has a headed effort at goal from just inside the area that misses to the right of the target.25:51
A cross is delivered by Rowan Vine, save made by Cameron Bell.25:04
Gregory Tade produces a cross. Free kick awarded for an unfair challenge on James Dayton by Nigel Hasselbaink. Free kick taken by Rory McKeown.21:27
Cillian Sheridan concedes a free kick for a foul on Gary Miller. Direct free kick taken by Alan Mannus.20:40
Alex Pursehouse challenges Liam Craig unfairly and gives away a free kick. Liam Craig takes the free kick.19:28
Liam Kelly challenges Murray Davidson unfairly and gives away a free kick. Alan Mannus restarts play with the free kick.18:03
Rowan Vine takes a short corner, Liam Craig takes a shot.17:23
Unfair challenge on Murray Davidson by James Fowler results in a free kick. Free kick taken by Liam Craig.15:58
The referee blows for offside. Ryan O'Leary takes the direct free kick.15:20
Free kick awarded for a foul by Gary Harkins on Frazer Wright. Free kick taken by Alan Mannus.14:25
Unfair challenge on Liam Craig by James Fowler results in a free kick. Liam Craig delivers the ball, Steven Anderson has a headed effort at goal from just outside the box which goes wide of the left-hand upright.13:07
Free kick awarded for an unfair challenge on Nigel Hasselbaink by James Dayton. The free kick is swung in right-footed by Gary Miller, Liam Kelly makes a clearance.10:03
Liam Craig delivers the ball. A cross is delivered by Cillian Sheridan, Liam Craig makes a clearance. James Dayton decides to take the corner short, clearance by Frazer Wright.8:00
Gary Harkins crosses the ball, clearance by Steven Anderson. Short corner taken by Gary Harkins, Centre by James Fowler, free kick awarded for a foul by Cillian Sheridan on Steven Anderson. Direct free kick taken by Alan Mannus.7:12
Corner taken right-footed by Gary Harkins from the right by-line to the near post, clearance made by Steven Anderson. Outswinging corner taken right-footed by Gary Harkins from the right by-line to the near post, clearance made by Liam Craig.6:47
Liam Kelly takes a shot. Clearance made by Steven Anderson.4:04
Gary Miller concedes a free kick for a foul on James Dayton. Gary Harkins has a direct shot on goal from the free kick, clearance by Liam Craig.2:38
Chris Millar sends in a cross, Michael Nelson manages to make a clearance.1:14
James Dayton challenges Nigel Hasselbaink unfairly and gives away a free kick. Gary Miller takes the free kick.0:00
The ref blows the whistle to begin the match.
Live data and text provided by our data suppliers