Dean Shiels struck deep into extra time at Hampden to break stubborn resistance from Ayr United and send Kilmarnock into the League Cup final.
Ayr keeper Kevin Cuthbert made a string of fine saves in the second half.
But he was finally beaten after 109 minutes at Hampden, with Shiels powering home a shot after Heffernan's low drive was spilled.
Ayr's defensive approach made for a one-sided contest, with Kilmarnock enjoying almost 70% of possession.
The Rugby Park side will meet either Celtic or Falkirk, who meet on Sunday, in the final in March.
The intense rivalry between the fans was not mirrored on the pitch as the match opened with a whimper.
Some 23 minutes had passed without incident before Ayr United defender John Robertson headed a Garry Hay delivery away from underneath his own crossbar.
Hay then tried his luck from long range but Cuthbert held the midfielder's shot comfortably.
Michael McGowan curled a free kick too high after Liam Kelly had brought a rare Ayr United counter-attack to a halt with a clumsy tackle on the edge of his penalty box.
A cute back heel from Paul Heffernan opened up the Ayr defence but Dean Shiels could not steer his shot on target.
Heffernan then picked out Ben Gordon with a great pass and the full-back charged into the penalty box only to shoot straight at Cuthbert, who was guarding his near post.
James Dayton had Killie supporters on their feet with an enterprising run early in the second half but, having waltzed down the byeline, his cutback failed to find a team-mate.
A Heffernan shot was deflected wide and Shiels slammed a promising free kick into the defensive wall after the Nothern Irishman had been cynically tripped by McGowan.
Cuthbert then made routine saves to deny Gordon and Hay as the Scottish Premier League side continued to dominate.
On 66 minutes, Cuthbert made an impressive double save to keep the score level.
The Ayr keeper was at full stretch to stop an arrowing drive from Dayton and stuck out a foot to thwart Gary Harkins as the midfielder latched on to the rebound.
There were more heroics from Cuthbert as he tipped over a rocket from Shiels then scrambled away a Manuel Pascali header from the resultant corner.
The First Division outfit registered their first shot on goal after 82 minutes, with Cammy Bell doing well to gather a smart, curling effort from Alan Geggan.
Killie responded with a rising strike from Hay but Cuthbert was again equal to it, his fingertips diverting the ball over the crossbar.
The pattern of play continued in extra time, with Ayr sitting deep in their own half and Kilmarnock probing for an opening.
The breakthrough came in the second period as Cuthbert got down to stop raking shots from Shiels and Heffernan but he could not keep out the third effort as Shiels thumped the ball home from 12 yards.
- 01 Cuthbert
- 03 Malone
- 04 Robertson
- 05 Smith
- 02 Tiffoney
- 06 Geggan Booked
- 07 Trouten (Tomsett - 113' )
- 08 McKernan (Dodd - 75' )
- 11 McGowan Booked
- 09 Moffat Booked
- 10 Wardlaw (Roberts - 60' )
- 20 McWilliams
- 16 Robertson
- 14 Dodd
- 15 Tomsett
- 12 Roberts
- 01 Bell
- 03 Hay Booked (Buijs - 105' )
- 04 Fowler
- 06 Nelson
- 19 Gordon
- 08 Kelly Booked
- 10 Dayton Booked (Silva - 79' )
- 11 Harkins (Racchi - 89' )
- 20 Shiels
- 29 Pascali
- 14 Heffernan
- 17 Letheren
- 13 Kroca
- 07 Silva
- 09 Buijs
- 22 Racchi
Live Text Commentary
The match has finished after extra time.119:48
Centre by Micheal McGowan, James Fowler manages to make a clearance.115:43
The ball is swung over by David Silva, Christopher Smith makes a clearance.114:54
Effort from outside the area by David Silva goes wide right of the goal.112:55
Liam Tomsett takes a shot. Brilliant save by Cameron Bell.112:13 Substitution
Substitution Liam Tomsett replaces Alan Trouten.111:51
Inswinging corner taken right-footed by Michael Moffat from the left by-line.110:27
Inswinging corner taken left-footed by Michael Moffat from the right by-line.108:29
The assist for the goal came from Paul Heffernan.108:29 Goal scored
Goal! - Dean Shiels - Ayr 0 - 1 Kilmarnock Dean Shiels finds the back of the net with a goal from deep inside the penalty box to the bottom left corner of the goal. Ayr 0-1 Kilmarnock.108:17
Drilled left-footed shot by Paul Heffernan. Brilliant save by Kevin Cuthbert.108:07
Shot from 12 yards by Dean Shiels. Save by Kevin Cuthbert.107:03
Paul Heffernan takes a shot from 18 yards. Kevin Cuthbert makes a comfortable save.105:32
David Silva crosses the ball, clearance by Andrew Geggan.105:01
The game restarts for the second half of extra time.105:00 +1:00 Substitution
Substitution Danny Buijs comes on in place of Garry Hay.103:15
Danny Racchi produces a right-footed shot from just outside the penalty area that goes harmlessly over the target.103:08
A cross is delivered by Ben Gordon, Jonathan Tiffoney gets a block in.101:50
Dean Shiels produces a right-footed shot from inside the area that clears the bar.101:25
Corner taken by Dean Shiels, clearance by Andrew Geggan.
Shot by Paul Heffernan. John Robertson gets a block in.98:11
Outswinging corner taken by Dean Shiels, Michael Nelson takes a shot. Comfortable save by Kevin Cuthbert.98:05
Centre by David Silva, Edward Malone gets a block in.91:00
David Silva produces a right-footed shot from the edge of the box and misses to the left of the goal.90:00 +4:14
The whistle goes for the end of normal time.90:00 +0:22
The ball is crossed by Danny Racchi, Edward Malone manages to make a clearance.89:03
The ball is sent over by Micheal McGowan, clearance made by Michael Nelson.87:52
Edward Malone takes the free kick.87:52 Substitution
Substitution Gary Harkins goes off and Danny Racchi comes on.87:52
James Fowler concedes a free kick for a foul on Adam Dodd.86:08
John Robertson gives away a free kick for an unfair challenge on David Silva. Paul Heffernan produces a shot on goal direct from the free kick.85:04
Shot by Michael Nelson from just outside the area goes over the net.84:23
Corner taken by Dean Shiels, clearance by Edward Malone.84:08
Corner taken right-footed by Dean Shiels, clearance made by John Robertson.83:51
Garry Hay takes a shot. Kevin Cuthbert makes a save.83:27
The ball is swung over by Ben Gordon, clearance by Andrew Geggan.83:22
The ball is delivered by David Silva, clearance by Micheal McGowan.83:01
David Silva produces a cross.82:14
Shot from 25 yards from Andrew Geggan. Save made by Cameron Bell.81:22
The ball is sent over by Jonathan Tiffoney.79:49
Inswinging corner taken right-footed by Dean Shiels, Andrew Geggan manages to make a clearance.79:24
Dean Shiels takes the inswinging corner, Manuel Pascali takes a shot. Kevin Cuthbert makes a save.79:07
Dean Shiels takes a shot. Save by Kevin Cuthbert.79:00
Liam Kelly delivers the ball, Christopher Smith manages to make a clearance.78:01 Substitution
Substitution David Silva comes on in place of James Dayton.77:16
The ball is delivered by Garry Hay, Edward Malone manages to make a clearance.76:20
Dean Shiels has shot on goal from just outside the area which goes wide of the right-hand upright.74:43 Substitution
Substitution Adam Dodd is brought on as a substitute for Jamie McKernon.74:38
Micheal McGowan produces a cross.73:28
Corner taken left-footed by James Dayton, save by Kevin Cuthbert.73:15
The ball is swung over by James Dayton, Andrew Geggan manages to make a clearance.71:31
Free kick awarded for an unfair challenge on Micheal McGowan by James Fowler. Free kick crossed by Edward Malone, Michael Nelson manages to make a clearance.70:44
Gary Harkins challenges Alan Trouten unfairly and gives away a free kick. Christopher Smith takes the free kick.70:02
Dean Shiels sends in a cross.69:09
James Dayton crosses the ball, Andrew Geggan manages to make a clearance.66:29
Shot from 12 yards from Gary Harkins. Save made by Kevin Cuthbert.66:10
James Dayton takes a shot. Save made by Kevin Cuthbert.65:29
Effort from just outside the area by Liam Kelly goes over the target.63:37
Shot by Manuel Pascali went wide left of the target.62:17
The ball is delivered by Garry Hay, clearance made by Edward Malone.60:39
Ben Gordon challenges Micheal McGowan unfairly and gives away a free kick. Jonathan Tiffoney takes the free kick.59:38
Liam Kelly takes the free kick.59:38 Substitution
Substitution Gareth Wardlaw leaves the field to be replaced by Mark Roberts.59:38
Free kick awarded for a foul by Micheal McGowan on Garry Hay.59:17
Dean Shiels takes a shot. Blocked by John Robertson.56:32
Garry Hay takes a shot. Save made by Kevin Cuthbert.56:26
The ball is swung over by Dean Shiels, clearance made by John Robertson.56:12
The ball is sent over by Liam Kelly.55:39
Shot from 18 yards from Ben Gordon. Save made by Kevin Cuthbert.54:53
Free kick taken by Christopher Smith.54:53 Booking
Booking Booking for James Dayton for unsporting behaviour.54:47
James Dayton gives away a free kick for an unfair challenge on Alan Trouten.53:32
Shot on goal comes in from Dean Shiels from the free kick.53:32 Booking
Booking The referee shows Micheal McGowan a yellow card for unsporting behaviour.53:26
Micheal McGowan challenges Dean Shiels unfairly and gives away a free kick.52:31
Inswinging corner taken right-footed by Dean Shiels from the left by-line to the near post, clearance by Gareth Wardlaw.52:13
Paul Heffernan takes a shot. Alan Trouten gets a block in.50:48
Micheal McGowan fouled by Gary Harkins, the ref awards a free kick. Alan Trouten takes the free kick.50:37
A cross is delivered by Liam Kelly, Kevin Cuthbert makes a save.50:20
James Dayton crosses the ball, Micheal McGowan manages to make a clearance.49:25
Dean Shiels is penalised for a handball. Kevin Cuthbert takes the free kick.48:55
Free kick taken by Manuel Pascali.48:55 Booking
Booking Michael Moffat receives a yellow card.48:48
Foul by Michael Moffat on Michael Nelson, free kick awarded.47:31
Unfair challenge on Andrew Geggan by Gary Harkins results in a free kick. Alan Trouten takes the direct free kick.46:13
The ball is crossed by Dean Shiels, save by Kevin Cuthbert.45:51
Corner taken right-footed by Dean Shiels.45:39
Ben Gordon delivers the ball, clearance by John Robertson.45:01
The game restarts for the second half.45:00 +0:19 Half time
Half Time The whistle is blown to end the first half.43:55
Foul by Alan Trouten on Dean Shiels, free kick awarded. Direct free kick taken by Manuel Pascali.41:10
The ball is crossed by James Dayton, Header from deep inside the area by Gary Harkins goes over the bar.38:14
James Dayton crosses the ball, Kevin Cuthbert makes a save.37:12
Andrew Geggan fouled by Garry Hay, the ref awards a free kick. Free kick taken by Alan Trouten.36:46
Free kick awarded for a foul by Gareth Wardlaw on Manuel Pascali. Free kick taken by Garry Hay.36:30
Ben Gordon takes a shot. Kevin Cuthbert makes a save.35:43
James Dayton gives away a free kick for an unfair challenge on Edward Malone. Kevin Cuthbert takes the direct free kick.34:27
Effort from inside the area by Dean Shiels misses to the left of the goal.33:33
Manuel Pascali challenges John Robertson unfairly and gives away a free kick. Kevin Cuthbert takes the free kick.33:03
Inswinging corner taken by Dean Shiels, Kevin Cuthbert makes a save.32:50
The ball is sent over by Ben Gordon, Andrew Geggan gets a block in.31:18
Strike on goal comes in from Micheal McGowan from the free kick.31:18 Booking
Booking Liam Kelly shown a yellow card.31:06
Foul by Liam Kelly on Alan Trouten, free kick awarded.29:53
Direct effort from the free kick comes in from James Dayton.29:53 Booking
Booking Andrew Geggan receives a yellow card for unsporting behaviour.29:45
Free kick awarded for a foul by Andrew Geggan on James Dayton.25:53
Garry Hay takes a shot. Save by Kevin Cuthbert.25:47
James Dayton produces a cross, John Robertson manages to make a clearance.24:42
Free kick awarded for an unfair challenge on Cameron Bell by Michael Moffat. Cameron Bell takes the direct free kick.24:01
John Robertson takes the direct free kick.24:01 Booking
Booking Garry Hay is cautioned.23:49
Free kick awarded for a foul by Garry Hay on Jonathan Tiffoney.23:24
Short corner taken by Dean Shiels.23:13
The ball is sent over by Garry Hay, clearance made by John Robertson.22:42
Corner taken left-footed by James Dayton from the right by-line to the near post, save made by Kevin Cuthbert.22:31
The ball is swung over by Garry Hay, John Robertson manages to make a clearance.20:02
Free kick awarded for a foul by Garry Hay on Micheal McGowan. Kevin Cuthbert takes the free kick.19:23
The official flags Paul Heffernan offside. Kevin Cuthbert takes the direct free kick.19:01
Gareth Wardlaw challenges Garry Hay unfairly and gives away a free kick. Direct free kick taken by Garry Hay.18:29
Corner from the left by-line taken by Dean Shiels, save made by Kevin Cuthbert.16:57
Short corner taken by Dean Shiels from the left by-line, Effort on goal by Garry Hay from just outside the area goes harmlessly over the target.16:44
The ball is delivered by Ben Gordon, Jonathan Tiffoney gets a block in.15:50
Foul by Jamie McKernon on Gary Harkins, free kick awarded. Direct free kick taken by James Fowler.14:43
Dean Shiels takes the inswinging corner, save by Kevin Cuthbert.14:05
James Dayton fouled by Michael Moffat, the ref awards a free kick. The free kick is delivered left-footed by James Dayton from right by-line, clearance made by John Robertson.11:48
Corner taken by Micheal McGowan from the right by-line, John Robertson challenges Michael Nelson unfairly and gives away a free kick. Cameron Bell takes the free kick.10:35
The ball is delivered by Ben Gordon, save by Kevin Cuthbert.9:20
Edward Malone challenges James Dayton unfairly and gives away a free kick. Direct free kick taken by Dean Shiels.5:45
Edward Malone fouled by Gary Harkins, the ref awards a free kick. Direct free kick taken by Edward Malone.4:57
Dean Shiels has an effort at goal from just outside the box which goes wide of the right-hand upright.3:50
Liam Kelly takes a shot. Edward Malone gets a block in.3:42
Garry Hay sends in a cross, Michael Moffat manages to make a clearance.0:00
The match begins.
Live data and text provided by our data suppliers