A double from substitute Paul Heffernan fired Kilmarnock into the last eight of the Scottish Cup.

The striker, on for the injured Cillian Sheridan late in the first-half, drilled in the opener on 58 minutes.

And the Irishman added a cute back-heel from Ross Barbour's strike with five minutes remaining.

Inverness, who lost Richie Foran and Andrew Shinnie to injury, forced a few saves from Cammy Bell but Ryan Esson was the busier of the goalkeepers.

Perhaps inspired by Friday's visit from American singer Marie Osmond, Kilmarnock started brightly and it took a sliding defender to block a shot from Barbour as the 20-year-old full-back broke into the penalty box.

Inverness, who lost in the League Cup semi-finals last weekend, were forced into an early change as skipper Foran hobbled off to be replaced by Philip Roberts.

Caley Thistle playmaker Andrew Shinnie picked out the galloping David Raven with a cute, chipped pass but the defender screwed his shot well off-target from 16 yards.

Kilmarnock forward Sheridan steamed his way into the penalty area from the left but his angled shot was weak and Esson, making a rare appearance for the visitors, made a comfortable save.

Home defender Jeroen Tesselaar was then left all alone at a free-kick but failed to get any meaningful contact on his attempted header and a glorious chance was spurned.

Inverness had to make a second substitution in the opening half hour, with the influential Shinnie apparently damaging a hamstring and Charles Taylor coming off the bench.

Roberts cut the ball back perfectly for Nick Ross near the penalty spot only for the Inverness midfielder to batter the ball against an opponent with a shot that lacked conviction.

Josh Meekings thought he had opened the scoring when he attacked an excellent corner from Aaron Doran but Sheridan was on the post to deny the Inverness centre-half with an instinctive clearance.

With the interval approaching, Kilmarnock pushed forward at pace to open up the Inverness defence but Sheridan's shot from 16 yards was woefully weak and Esson gathered with ease.

That was to be Sheridan's last contribution as he too pulled a hamstring and trudged down the tunnel to be replaced by match-winner Heffernan.

The second half opened with Bell making a smart save to prevent what would have been an own goal from James Fowler as the ball skidded off the defender's head from a corner.

Heffernan headed wide from a swift counter-attack but made amends with a lovely finish for the opening goal.

The visitors were outnumbered at the back as four Kilmarnock players surged forward and the ball ricocheted off two defenders as it broke to the substitute on the edge of the penalty area.

That may have been a touch fortunate but there was nothing lucky about the striker's emphatic, low finish.

With gaps appearing in the Inverness defence, Esson pushed away an awkward, bobbling shot from William Gross and recovered to make a great close-range block from Borja Perez.

Inverness struggled to create openings but Owain Tudor-Jones got his head to a corner, with Bell doing well to hold on to the ball.

And Heffernan made sure of Kilmarnock's deserved progress, diverting Barbour's low shot with his heel from six yards.

Lineup, Bookings (2) & Substitutions (5)

Kilmarnock

  • 01 Bell
  • 02 Tesselaar
  • 04 Fowler
  • 23 McKeown
  • 25 Barbour
  • 38 O'Hara
  • 88 Sissoko
  • 10 Dayton (Hay - 70' Booked )
  • 09 Gross
  • 12 Sheridan (Heffernan - 45' )
  • 15 Perez

Substitutes

  • 17 Letheren
  • 03 Hay
  • 29 Pascali
  • 14 Heffernan
  • 24 McKenzie

Inverness CT

  • 01 Esson
  • 02 Raven
  • 03 Shinnie
  • 05 Warren
  • 14 Meekings
  • 04 Tudur-Jones
  • 10 Shinnie (Taylor - 31' )
  • 11 Ross (Gibbons - 81' )
  • 07 McKay
  • 09 Foran Booked (Roberts - 16' )
  • 17 Doran

Substitutes

  • 12 Reguero
  • 27 Devine
  • 28 Taylor
  • 26 Gibbons
  • 23 Roberts
Ref: Collum
Att: 3,172

Match Stats

Shots

10 9

On target

8 6

Corners

2 6

Fouls

12 8

Live Text Commentary

90:00 +2:59 Full time

Full Time The final whistle is blown by the referee.

90:00 +2:28

Jordan Gibbons fouled by William Gros, the ref awards a free kick. David Raven takes the direct free kick.

90:00 +1:39

Paul Heffernan gives away a free kick for an unfair challenge on Aaron Doran. Free kick crossed left-footed by Graeme Shinnie from left wing, save by Cameron Bell.

88:42

Free kick taken by Graeme Shinnie.

88:42 Booking

Booking The referee books Garry Hay for dissent.

88:27

Unfair challenge on Jordan Gibbons by Garry Hay results in a free kick.

84:50

Assist on the goal came from Ross Barbour.

84:50 Goal scored

Goal! - Paul Heffernan - Kilmarnock 2 - 0 Inverness Goal scored by Paul Heffernan from close in low into the middle of the goal. Kilmarnock 2-0 Inverness CT.

84:31

Garry Hay has a drilled shot. Save by Ryan Esson.

83:25

Borja Perez has an effort at goal from outside the box which goes wide right of the goal.

80:26

Cameron Bell takes the indirect free kick.

80:26 Substitution

Substitution Jordan Gibbons joins the action as a substitute, replacing Nick Ross.

80:26

The assistant referee signals for offside against Charlie Taylor.

79:08

Inswinging corner taken by Graeme Shinnie from the right by-line, Owain Tudur Jones takes a shot. Save by Cameron Bell.

78:50

Shot from 25 yards from Owain Tudur Jones. Blocked by Jeroen Tesselaar.

75:45

Paul Heffernan takes a shot. Ryan Esson makes a brilliant save.

75:25

William Gros takes the chance to get an effort at goal. Brilliant save by Ryan Esson.

74:28

Graeme Shinnie takes the inswinging corner, Rory McKeown makes a clearance.

71:54

Outswinging corner taken from the right by-line by Borja Perez, clearance made by Josh Meekings.

70:34

Mark O'Hara challenges Charlie Taylor unfairly and gives away a free kick. Graeme Shinnie crosses the ball in from the free kick, free kick awarded for an unfair challenge on Mark O'Hara by Owain Tudur Jones. Cameron Bell takes the free kick.

69:58 Substitution

Substitution Garry Hay is brought on as a substitute for James Dayton.

66:30

Philip Roberts has a drilled shot. Save by Cameron Bell.

63:47

Philip Roberts has an effort at goal from a long way out that goes wide left.

62:21

Corner taken left-footed by Graeme Shinnie, clearance by Rory McKeown.

62:03

Effort from 12 yards by Aaron Doran. Rory McKeown gets a block in.

61:22

Free kick awarded for an unfair challenge on Philip Roberts by James Fowler. Free kick taken by Philip Roberts.

57:21 Goal scored

Goal! - Paul Heffernan - Kilmarnock 1 - 0 Inverness Paul Heffernan fires in a goal from inside the penalty box to the bottom left corner of the goal. Kilmarnock 1-0 Inverness CT.

55:21

Foul by William Gros on Charlie Taylor, free kick awarded. Direct free kick taken by Ryan Esson.

51:38

Free kick awarded for a foul by Gary Warren on James Fowler. Free kick taken by Jeroen Tesselaar.

50:35

Borja Perez sends in a cross.

49:55

Foul by Gary Warren on William Gros, free kick awarded. Borja Perez takes the direct free kick.

49:25

A cross is delivered by David Raven.

47:53

Paul Heffernan takes a shot. Clearance made by Graeme Shinnie.

46:59

Graeme Shinnie fouled by Jeroen Tesselaar, the ref awards a free kick. Free kick taken by Graeme Shinnie.

46:47

Free kick awarded for an unfair challenge on Gary Warren by William Gros. Direct free kick taken by Ryan Esson.

45:13

Inswinging corner taken by Graeme Shinnie, Philip Roberts takes a shot. Save made by Cameron Bell.

45:01

The second half kicks off.

45:00 +2:19 Half time

Half Time The half-time whistle blows.

45:00 +1:22

Jeroen Tesselaar challenges Billy McKay unfairly and gives away a free kick. Aaron Doran takes the direct free kick.

45:00 +0:52

Free kick awarded for an unfair challenge on Gary Warren by Borja Perez. Direct free kick taken by Ryan Esson.

45:00 +0:15

Borja Perez takes the direct free kick.

45:00 +0:15 Substitution

Substitution Cillian Sheridan leaves the field to be replaced by Paul Heffernan.

45:00 +0:15

Foul by Owain Tudur Jones on William Gros, free kick awarded.

42:39

Cillian Sheridan takes a shot. Save by Ryan Esson.

40:23

The ball is sent over by Graeme Shinnie.

34:16

Corner taken right-footed by Aaron Doran, Cillian Sheridan makes a clearance.

31:23

Nick Ross takes a shot. Blocked by Ross Barbour.

30:21 Substitution

Substitution Andrew Shinnie goes off and Charlie Taylor comes on.

26:56

Free kick awarded for an unfair challenge on James Dayton by Aaron Doran. Free kick taken by Borja Perez.

22:13

Effort from outside the penalty box by Graeme Shinnie goes wide right of the goal.

19:46

A cross is delivered by Graeme Shinnie.

19:05

Cillian Sheridan has a mishit shot. Save by Ryan Esson.

17:12

David Raven produces a mishit right-footed shot from deep inside the penalty area which goes wide of the left-hand post.

15:57

Unfair challenge on Rory McKeown by Philip Roberts results in a free kick. Free kick crossed right-footed by Borja Perez, save made by Ryan Esson.

15:12 Substitution

Substitution Philip Roberts replaces Richie Foran.

13:22

Aaron Doran takes the inswinging corner, free kick awarded for a foul by Gary Warren on Cameron Bell. Cameron Bell takes the direct free kick.

11:29

Aaron Doran fouled by Rory McKeown, the ref awards a free kick. Aaron Doran crosses the ball from the free kick right-footed from right wing.

10:36

Borja Perez gives away a free kick for an unfair challenge on Andrew Shinnie. Free kick taken by Graeme Shinnie.

9:18

Rory McKeown crosses the ball, save made by Ryan Esson.

7:05

Andrew Shinnie crosses the ball, save by Cameron Bell.

4:46

Andrew Shinnie is penalised for a handball. Free kick taken by Cameron Bell.

1:52

Corner from the right by-line taken by Borja Perez, David Raven makes a clearance.

1:00

Mohamadou Sissoko restarts play with the free kick.

1:00 Booking

Booking Booking for Richie Foran for unsporting behaviour.

0:41

Richie Foran concedes a free kick for a foul on Mark O'Hara.

0:11

William Gros produces a right-footed shot from just outside the box that misses to the right of the goal.

0:00

The game gets underway.

Live data and text provided by our data suppliers