Inverness ended Hearts' recent winning streak and continued their own unbeaten run on the road by claiming a Scottish Premier League point at Tynecastle.
The visitors went ahead when Grant Munro headed home in the 17th minute.
A foul by goalkeeper Ryan Esson on Stephen Elliott gave Hearts the chance to level from the spot eight minutes later and Kevin Kyle converted.
Kyle, David Templeton and Rudi Skacel all came close for Hearts but there was to be no winner in the capital.
The result brings to an end Hearts' sequence of wins, the Edinburgh club having won their previous six matches, and Jim Jefferies' side also miss the chance to go level on points with second-place Celtic.
The draw also means Inverness have completed a calendar year without losing a league game away from home, their last such defeat coming in November 2009 with their next away fixture not due to take place until the New Year.
The match opened at a furious pace and both sides were prominent in attacking areas in the early stages.
A foul by Ian Black on Richie Foran gave the Highlanders a free-kick and Duncan's delivery was headed towards goal by Munro.
Adam Rooney tried to usher the ball over the line and, even though he did not make contact, there was enough power on Munro's header to carry the ball into the net.
Hearts' responded by pinning Inverness back and referee Brian Winter pointed to the spot when Elliott was felled in the box by Esson, who was promptly booked.
Kyle fired home confidently from the spot, the striker's second penalty success of the week after the midweek winner at Motherwell.
The home side ended the first half in the ascendancy and Kyle's shot from a tight angle hit the side netting.
David Templeton then struck the Inverness post with a stunning 25-yard effort and Esson was required to save Ryan Stevenson's left-foot shot.
Templeton and Skacel combined to set up Elliott for a chance but the striker could not direct his shot on target just before the break.
Hearts continued to dominate after the break and Templeton raced on to Kyle's pass only to drag his shot wide of Esson's goal.
Rooney found the net at the other end but had already been flagged offside.
The aerial threat of Kyle was causing Inverness problems and Esson parried the striker's header before claiming at the feet of Elliott, who was waiting to pounce.
Templeton came close again when his shot swerved narrowly past the post after working his way in from the left.
Skacel then burst through the Inverness defence and his shot scraped the outside of the post as it slipped past .
Calum Elliot replaced Stephen Elliott in the closing stages and the substitute's flick towards goal was cleared on the line by Esson's foot as Inverness protected their point.
And the visitors may have snatched victory with a counter attack but Duncan's shot was blocked by keeper Marian Kello.
Live text and stats
Saturday, 18 December 2010
Kyle (pen) 25
21 Ismael Bouzid (Stevenson 19)
12 Templeton yellow card
10 Elliott (Elliot 83)
01 Esson yellow card
04 Duff yellow card
09 Foran (Sutherland 76)
11 Hayes (Odhiambo 84)
19 Ross (Innes 90)
Ref: WinterAtt: 12,994
Attempts on target
Attempts off target
93:27 The referee signals the end of the game.
90:00+2:29 Rudolf Skacel takes a inswinging corner.
90:00+2:02 Russell Duncan takes a shot. Marian Kello makes a save.
89:10 Russell Duncan challenges Calum Elliot unfairly and gives away a free kick. David Templeton crosses the ball from the free
kick right-footed from left channel.
89:10 Substitution Chris Innes is brought on as a substitute for Nick Ross.
88:28 Foul by Shane Sutherland on David Templeton, free kick awarded. The free kick is delivered right-footed by David Templeton
from left channel, clearance made by Grant Munro.
87:56 Inswinging corner taken from the left by-line by Rudolf Skacel.
87:03 Outswinging corner taken by Rudolf Skacel from the right by-line, save by Ryan Esson.
86:42 Corner taken by Rudolf Skacel played to the near post, clearance made by Russell Duncan.
86:24 The ball is swung over by Eggert Jonsson.
84:07 Shot from just outside the penalty box by Kevin Kyle misses to the left of the target.
83:17 Substitution (Inverness CT) makes a substitution, with Eric Odhiambo coming on for Jonathan Hayes.
82:49 Substitution Calum Elliot is brought on as a substitute for Stephen Elliott.
82:10 Shot by Russell Duncan from outside the area goes high over the crossbar.
81:10 Rudolf Skacel has an effort at goal from just inside the box that misses to the right of the target.
78:25 Free kick awarded for a foul by Ian Black on Russell Duncan. Grant Munro restarts play with the free kick.
75:34 Substitution Shane Sutherland is brought on as a substitute for Richie Foran.
75:20 Effort from the edge of the area by Rudolf Skacel goes wide of the right-hand upright.
72:54 David Templeton has an effort at goal from outside the area which goes wide right of the goal.
72:02 Stuart Duff concedes a free kick for a foul on David Templeton. Marius Zaliukas takes the free kick.
70:34 Inswinging corner taken right-footed by Rudolf Skacel, Richie Foran makes a clearance.
70:02 Short corner worked by David Templeton.
69:51 Ryan Stevenson fouled by Adam Rooney, the ref awards a free kick. Direct free kick taken by Ryan Stevenson.
68:51 Free kick awarded for a foul by Richie Foran on Ian Black. Rudolf Skacel crosses the ball from the free kick left-footed from
left wing, Russell Duncan manages to make a clearance.
67:26 Stephen Elliott challenges Russell Duncan unfairly and gives away a free kick. Grant Munro takes the free kick.
65:56 The referee blows for offside. Direct free kick taken by Ryan Esson.
65:27 Free kick awarded for a foul by Nick Ross on Ian Black. Free kick crossed by Rudolf Skacel.
64:14 Centre by Eggert Jonsson.
61:43 Centre by Eggert Jonsson, Kevin Kyle takes a shot. Save by Ryan Esson.
58:52 Ian Black crosses the ball.
57:23 Adam Rooney takes a shot. Save made by Marian Kello.
56:58 Ryan Stevenson produces a cross.
56:33 Unfair challenge on Rudolf Skacel by Nick Ross results in a free kick. Rudolf Skacel takes the direct free kick.
54:03 Stephen Elliott sends in a cross.
51:14 The referee blows for offside against Adam Rooney. Indirect free kick taken by Marian Kello.
50:37 Eggert Jonsson gives away a free kick for an unfair challenge on Russell Duncan. The free kick is swung in right-footed by
Russell Duncan, clearance by David Templeton.
49:50 Shot by David Templeton from deep inside the penalty area misses to the right of the goal.
45:06 Free kick awarded for an unfair challenge on Jonathan Hayes by Kevin Kyle. Stuart Duff takes the direct free kick.
45:01 The referee blows his whistle to start the second half.
45:00+1:17 It is the end of the first-half.
45:00+0:23 Eggert Jonsson concedes a free kick for a foul on Richie Foran. Grant Munro restarts play with the free kick.
44:54 Effort on goal by Stephen Elliott from inside the penalty area goes harmlessly over the bar.
44:27 Stephen Elliott is caught offside. Free kick taken by Ryan Esson.
43:40 Foul by Richie Foran on Stephen Elliott, free kick awarded. Rudolf Skacel takes the free kick.
43:32 Ruben Palazuelos produces a cross.
40:57 Corner from left by-line taken by Rudolf Skacel.
39:50 Adam Rooney fouled by Adrian Mrowiec, the ref awards a free kick. Grant Munro takes the direct free kick.
37:01 Free kick awarded for an unfair challenge on Graeme Shinnie by Stephen Elliott. Ryan Esson takes the free kick.
36:04 Ryan Stevenson takes a shot. Save made by Ryan Esson.
33:00 David Templeton has an effort at goal from a long way out that bounces off the post.
32:18 Corner taken right-footed by Rudolf Skacel from the left by-line, clearance by Grant Munro.
32:04 Rudolf Skacel takes a shot. Blocked by Nick Ross.
30:56 Richie Foran takes a shot. Marian Kello makes a save.
26:56 Unfair challenge on Ryan Stevenson by Stuart Duff results in a free kick. Strike comes in from Ian Black from the free kick.
25:00 Penalty awarded for a foul by Ryan Esson on Stephen Elliott.
25:00 GOAL - Kevin Kyle:Hearts 1 - 1 Inverness CT Penalty scored by Kevin Kyle. Hearts 1-1 Inverness CT.
23:57 Booking Ryan Esson receives a caution.
22:46 Booking The referee shows David Templeton a yellow card for unsporting behaviour.
22:31 Nick Ross takes a shot. Save by Marian Kello.
20:39 The ball is crossed by David Templeton.
20:03 The assistant referee signals for offside against Richie Foran. Free kick taken by Marian Kello.
18:41 Substitution Ryan Stevenson joins the action as a substitute, replacing Ismael Bouzid.
17:41 Foul by Adam Rooney on Eggert Jonsson, free kick awarded. Ismael Bouzid takes the indirect free kick.
16:18 Free kick awarded for a foul by Ian Black on Richie Foran. Assist on the goal came from Russell Duncan.
16:18 GOAL - Grant Munro:Hearts 0 - 1 Inverness CT Grant Munro grabs a headed goal from inside the penalty box. Hearts 0-1 Inverness CT.
12:50 Corner taken right-footed by Russell Duncan to the near post, Marius Zaliukas manages to make a clearance.
12:01 Shot from just outside the box by Ian Black goes over the crossbar.
11:21 Stuart Duff challenges David Templeton unfairly and gives away a free kick. Rudolf Skacel delivers the ball from the free
kick left-footed from left by-line, Grant Munro makes a clearance.
11:21 Booking Booking for Stuart Duff for unsporting behaviour.
10:15 Centre by Richie Foran.
9:54 Nick Ross sends in a cross, Ismael Bouzid makes a clearance.
9:20 The offside flag is raised against Stephen Elliott. Indirect free kick taken by Ryan Esson.
Correction - 8:59 Lee Cox concedes a free kick for a foul on Ian Black. Marius Zaliukas restarts play with the free kick.
8:59 Foul by Lee Cox on Ian Black, free kick awarded. Marius Zaliukas restarts play with the free kick.
8:04 Corner taken right-footed by Adam Rooney, clearance made by Kevin Kyle.
7:03 Lee Cox is ruled offside. Marian Kello restarts play with the free kick.
6:30 Ian Black gives away a free kick for an unfair challenge on Graeme Shinnie. Russell Duncan crosses the ball from the free
kick right-footed from left channel.
5:04 The ball is delivered by Adam Rooney, Ross Tokely takes the chance to get an effort at goal.
3:40 The official flags Rudolf Skacel offside. Lee Cox takes the direct free kick.
3:23 Centre by Richie Foran, Ruben Palazuelos makes a clearance.
0:00 The referee gets the game started.
Live text and data provided by The Press Association.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.