Kilmarnock striker Cillian Sheridan scored his first senior hat-trick to punish Hearts at Tynecastle for a lack of composure in front of goal.
Hearts winger Arvydas Novikovas shot over the bar and Callum Paterson twice spurned first-half headed chances.
But Sheridan was much more assured, his header on 32 minutes leaving Hearts goalkeeper Jamie MacDonald helpless.
The Irishman added two after the break with a cool finish and a tap-in before Marius Zaliukas headed a consolation.
Sheridan's hat-trick was Kilmarnock's first since Kevin Kyle's against Falkirk in April 2009.
Hearts felt they should have been awarded a penalty in the early stages when Paterson was sent sprawling under a challenge by Kilmarnock captain Manuel Pascali.
However, referee Bobby Madden was not convinced.
Hearts began the game much the better side and Novikovas was the first to try his luck.
Ryan McGowan drove down the left and cut the ball back into the box but the Lithuanian winger blasted over from 14 yards.
Hearts' 17-year-old striker Paterson then passed up two glorious chances to fire his team in front but on both occasions failed to find the target.
Kilmarnock were soaking up the pressure and their defence line of Ryan O'Leary and Michael Nelson looked rock solid.
The visitors then took the lead with 13 minutes left in the first half.
James Dayton made headway down the left and his cross into the box was met by Sheridan who sent a glancing header into the corner of the net.
The goal stunned the home crowd who certainly let their feelings be known from the stand.
Kilmarnock doubled their advantage five minutes into the second half.
Sheridan looked offside when he collected the ball on the touchline before charging into the box and firing the ball underneath the body of MacDonald.
The Hearts players protested but referee Madden was having none of it and the goal stood.
And the 600 or so Kilmarnock fans were in full voice as Sheridan notched his and the team's third of the afternoon on the hour mark.
The home defence failed to deal with a cross at the back post and unmarked Sheridan had a simple task to tap the ball into the net.
Hearts huffed and puffed and Zaliukas pulled one back with three minutes remaining when he headed Danny Grainger's corner into the roof of the net.
It was all too little, too late, though, for Hearts and the visitors held on with ease.
Heart of Midlothian
- 01 MacDonald
- 03 Grainger
- 05 Barr
- 26 Zaliukas
- 04 McGowan
- 07 Stevenson
- 08 Robinson (Sutton - 57' )
- 10 Taouil
- 11 Driver (Carrick - 74' )
- 18 Novikovas
- 33 Paterson
- 21 Enckelman
- 06 Webster
- 29 McHattie
- 19 McGowan
- 09 Sutton
- 12 Smith
- 37 Carrick
- 17 Letheren
- 04 Fowler Booked
- 05 O'Leary
- 06 Nelson
- 23 McKeown
- 07 Racchi (Winchester - 87' )
- 08 Kelly (Johnson - 87' )
- 10 Dayton Booked (Johnston - 76' )
- 11 Harkins
- 29 Pascali
- 12 Sheridan
- 53 Jaakkola
- 26 Pursehouse
- 18 Johnson
- 28 Winchester
- 16 Boulding
- 24 McKenzie
- 30 Johnston
Live Text Commentary
Free kick awarded for an unfair challenge on Chris Johnston by Ryan McGowan. Direct free kick taken by Chris Johnston.89:23
The official flags Gary Harkins offside. Jamie MacDonald restarts play with the free kick.87:49
Daniel Grainger provided the assist for the goal.87:49 Goal scored
Goal! - Marius Zaliukas - Hearts 1 - 3 Kilmarnock Marius Zaliukas fires in a goal from inside the area to the top right corner of the goal. Hearts 1-3 Kilmarnock.87:25
Effort from just outside the area by Mehdi Taouil goes over the target. Outswinging corner taken left-footed by Daniel Grainger,86:20 Substitution
Substitution Jude Winchester replaces Danny Racchi.86:20 Substitution
Substitution Lee Johnson comes on in place of Liam Kelly.83:42
Daniel Grainger takes a corner. John Sutton takes a shot. Outswinging corner taken from the left by-line by Daniel Grainger, Ryan O'Leary manages to make a clearance. Free kick awarded for a foul by Daniel Grainger on Rory McKeown. Kyle Letheren takes the free kick.81:22 Full time
Full Time The referee brings the game to a close.81:15
Manuel Pascali concedes a free kick for a foul on John Sutton. Daniel Grainger restarts play with the free kick.80:10
Liam Kelly gives away a free kick for an unfair challenge on Arvydas Novikovas. The ball is crossed by Daniel Grainger, Header from deep inside the penalty area by Darren Barr goes harmlessly over the crossbar.77:53
Marius Zaliukas takes a shot. Save by Kyle Letheren.77:28
Daniel Grainger produces a cross, James Fowler makes a clearance.75:22
Jamie MacDonald takes the free kick.75:22 Substitution
Substitution Chris Johnston comes on in place of James Dayton.75:22
Rory McKeown is caught offside.74:09
Free kick awarded for a foul by James Fowler on Dale Carrick. Free kick taken by Mehdi Taouil.73:07 Substitution
Substitution (Hearts) makes a substitution, with Dale Carrick coming on for Andrew Driver.70:42
Danny Racchi has an effort at goal from outside the area missing to the wide right of the goal.66:26
Daniel Grainger sends in a cross, Kyle Letheren manages to make a clearance.
Effort from the edge of the penalty box by Callum Paterson goes wide of the right-hand upright.63:51
Rory McKeown sends in a cross.62:49
Unfair challenge on Cillian Sheridan by Marius Zaliukas results in a free kick. Cillian Sheridan takes the direct free kick.61:33
Danny Racchi provided the assist for the goal.61:33 Goal scored
Goal! - Cillian Sheridan - Hearts 0 - 3 Kilmarnock A goal is scored by Cillian Sheridan from close in to the bottom right corner of the goal. Hearts 0-3 Kilmarnock.60:54
Direct free kick taken by Danny Racchi,60:54 Booking
Booking James Dayton shown a yellow card.60:14
Unfair challenge on Rory McKeown by Andrew Driver results in a free kick.56:35 Substitution
Substitution (Hearts) makes a substitution, with John Sutton coming on for Scott Robinson.55:44
Corner taken left-footed by Danny Racchi, Daniel Grainger manages to make a clearance.50:22
Manuel Pascali provided the assist for the goal.50:22 Goal scored
Goal! - Cillian Sheridan - Hearts 0 - 2 Kilmarnock Cillian Sheridan scores a goal from inside the box low into the middle of the goal. Hearts 0-2 Kilmarnock.45:01
The second half kicks off.45:00 +27:04 Half time
Half Time The half-time whistle blows.44:29
Cillian Sheridan sends in a cross.43:38
Andrew Driver crosses the ball.42:11
Arvydas Novikovas produces a right-footed effort from long distance that goes harmlessly over the bar.40:32
Cillian Sheridan fouled by Daniel Grainger, the ref awards a free kick. James Fowler restarts play with the free kick.39:05
The ball is crossed by Ryan McGowan.37:42
Callum Paterson fouled by Michael Nelson, the ref awards a free kick. Daniel Grainger takes the direct free kick.36:45
The ball is delivered by James Dayton, Marius Zaliukas makes a clearance.34:29
Inswinging corner taken by Daniel Grainger from the right by-line, clearance by Liam Kelly.33:23
Ryan Stevenson takes a shot. Ryan O'Leary gets a block in. Inswinging corner taken left-footed by Daniel Grainger. Inswinging corner taken by Ryan Stevenson, Ryan O'Leary manages to make a clearance.31:55
James Dayton provided the assist for the goal.31:55 Goal scored
Goal! - Cillian Sheridan - Hearts 0 - 1 Kilmarnock Cillian Sheridan finds the back of the net with a headed goal from deep inside the penalty box. Hearts 0-1 Kilmarnock.27:51
Short corner taken by Daniel Grainger, James Fowler manages to make a clearance.26:56
Liam Kelly gives away a free kick for an unfair challenge on Mehdi Taouil. Daniel Grainger takes the free kick.25:32
Corner taken by Daniel Grainger played to the near post. Marius Zaliukas takes a shot.25:17
Danny Racchi sends in a cross, clearance made by Ryan Stevenson.23:30
Inswinging corner taken by Ryan Stevenson from the left by-line.22:42
Arvydas Novikovas produces a cross, clearance by Liam Kelly.22:02
Arvydas Novikovas sends in a cross, Michael Nelson makes a clearance. Andrew Driver takes the inswinging corner, Kyle Letheren makes a save.20:28
Cillian Sheridan gives away a free kick for an unfair challenge on Darren Barr. Direct free kick taken by Jamie MacDonald. James Dayton fouled by Ryan Stevenson, the ref awards a free kick. Direct free kick taken by Rory McKeown.19:25
Andrew Driver sends in a cross.18:27
Centre by Danny Racchi.16:33
Shot from inside the area by Arvydas Novikovas clears the bar.15:33
Rory McKeown challenges Andrew Driver unfairly and gives away a free kick. Free kick taken by Jamie MacDonald.13:52
Arvydas Novikovas is caught offside. Kyle Letheren restarts play with the free kick. Foul by Arvydas Novikovas on Danny Racchi, free kick awarded. James Dayton shoots direct from the free kick.12:03 Booking
Booking The referee books James Fowler for unsporting behaviour.11:01
Danny Racchi takes a shot. The ball is crossed by James Fowler, save by Jamie MacDonald.10:26
The offside flag is raised against Andrew Driver. Kyle Letheren restarts play with the free kick.9:15
Free kick awarded for an unfair challenge on Ryan Stevenson by Liam Kelly. Darren Barr takes the free kick.7:05
Arvydas Novikovas takes a shot. Manuel Pascali gets a block in. Callum Paterson takes a shot. Blocked by Michael Nelson.6:25
Callum Paterson is ruled offside. Free kick taken by Michael Nelson.5:45
Callum Paterson concedes a free kick for a foul on Ryan O'Leary. Free kick taken by Kyle Letheren.4:43
Free kick awarded for an unfair challenge on Arvydas Novikovas by Danny Racchi. Direct free kick taken by Ryan Stevenson.2:28
Cillian Sheridan fouled by Darren Barr, the ref awards a free kick. Free kick taken by Danny Racchi, The ball is sent over by Rory McKeown.1:53
The ball is crossed by Rory McKeown, clearance by Marius Zaliukas.0:00
The game begins.
Live data and text provided by our data suppliers