Hearts broke their four-match goal drought against Inverness with a hard-fought win at Tynecastle.
After a goalless first half, Rudi Skacel met a flick by John Sutton to drive low and hard into the Inverness net 25 seconds after the re-start.
Inverness equalised after 57 minutes when Ross Tokely headed home a Jonny Hayes free-kick from close range.
Eggert Jonsson clinched the points with his own simple header from a David Templeton corner 15 minutes from time.
Blustery conditions contributed to a stop-start contest, with Jonsson and Tokely booked early on, before the hosts had the first opportunity.
Ryan McGowan stole the ball at the bye-line from a hesitant Hayes and cut it back, but Ryan Stevenson scuffed his shot straight at Ryan Esson in the Inverness goal.
Andrew Shinnie responded with a snap-shot from 25 yards which went narrowly wide before Marian Kello's goal came under further pressure when a casual Marius Zaliukas failed to control a simple pass in defence.
Hayes stole in and played Gregory Tade through one-on-one, but the Hearts goalkeeper saved well with his feet.
Stevenson had another effort from the edge of the area before Tokely was withdrawn at half-time for Adrian Mrowiec.
The Pole's first act was to celebrate Hearts' first goal since mid-October. It came 25 seconds after the restart when Skacel latched onto a ball down the right and hit an angled shot beyond Esson into the bottom corner.
Shinnie shot over soon after, before Tokely equalised for Inverness. Hayes' free-kick from deep on the right evaded a static Hearts defence and the defender headed in at the back post.
Tansey blasted over from 30 yards after winning the ball well in midfield and Terry Butcher's energised side applied pressure on the Tynecastle team's defence again.
Tade robbed Andy Webster, Shinnie's effort was saved by Kello and Hayes hit the follow-up over the bar.
Next, Sutton's shot was deflected wide after he turned Chris Hogg and from the resulting corner the lead was restored.
A short set-piece was played, Templeton fired a cross inside the six-yard box and the ball ricocheted off Jonsson's head and in, inflicting a second straight defeat on Inverness.
Live Text Commentary
Full Time The referee signals the end of the game.90:00 +0:10 Substitution
Substitution Shane Sutherland joins the action as a substitute, replacing Gregory Tade.90:00 +0:10 Substitution
Substitution Scott Robinson replaces David Templeton.90:00 +0:10
Gregory Tade concedes a free kick for a foul on Eggert Jonsson. Andy Webster restarts play with the free kick.88:13
Unfair challenge on Richie Foran by Andy Webster results in a free kick. Free kick crossed left-footed by Johnny Hayes from left channel, save by Marian Kello.86:32
Free kick awarded for a foul by David Templeton on David Proctor. Free kick crossed left-footed by Johnny Hayes.84:39
The assistant referee signals for offside against Gregory Tade. Free kick taken by Marian Kello.83:48
Shot from outside the box by David Templeton misses to the left of the goal.82:14 Substitution
Substitution Nick Ross joins the action as a substitute, replacing Andrew Shinnie.80:48
The assistant referee flags for offside against Mehdi Taouil. Free kick taken by Ryan Esson.79:47 Substitution
Substitution Mehdi Taouil replaces John Sutton.77:29
Inswinging corner taken left-footed by Johnny Hayes, David Davis has an effort at goal from outside the penalty box which goes wide right of the target.77:20
The ball is delivered by Andrew Shinnie, blocked by Ryan McGowan.75:41
The assist for the goal came from David Templeton.75:41 Goal scored
Goal! - Eggert Jonsson - Hearts 2 - 1 Inverness Eggert Jonsson finds the back of the net with a headed goal from inside the six-yard box. Hearts 2-1 Inverness CT.75:21
The ball is sent over by David Templeton,74:52
Short corner worked by Jamie Hamill.74:22
Effort from the edge of the box by John Sutton goes wide of the right-hand upright.72:18 Substitution
Substitution David Proctor is brought on as a substitute for Josh Meekings.71:28
Jamie Hamill sends in a cross.
Outswinging corner taken left-footed by Johnny Hayes from the left by-line to the near post, clearance made by John Sutton.68:51
Unfair challenge on Andy Webster by Gregory Tade results in a free kick. Indirect free kick taken by Andy Webster.68:26
Volleyed left-footed shot by Eggert Jonsson. Save by Ryan Esson.67:02
Andrew Shinnie takes a shot. Save by Marian Kello. Johnny Hayes produces a right-footed shot from inside the area that clears the crossbar.66:18
Gregory Tade is penalised for handball and concedes a free kick. Indirect free kick taken by Marian Kello.66:04
A cross is delivered by David Templeton, save by Ryan Esson.64:31
Corner taken by Jamie Hamill from the right by-line, Ross Tokely manages to make a clearance.63:46
Corner from the left by-line taken by Jamie Hamill, save by Ryan Esson.62:02
Effort by Greg Tansey from a long way out goes over the target.58:51
The ball is crossed by Adrian Mrowiec.57:51
Assist on the goal came from Johnny Hayes.57:51 Goal scored
Goal! - Ross Tokely - Hearts 1 - 1 Inverness Ross Tokely scores a headed goal from close range. Hearts 1-1 Inverness CT.57:18
Free kick awarded for a foul by Eggert Jonsson on Johnny Hayes. Johnny Hayes sends in a cross,56:45
David Templeton has a drilled shot. Blocked by Ross Tokely.54:46
David Templeton takes a shot. Save by Ryan Esson.53:01
Corner from right by-line taken by Johnny Hayes.51:02
Unfair challenge on Ryan McGowan by Gregory Tade results in a free kick. Free kick taken by Marius Zaliukas.50:07
David Obua delivers the ball, clearance by Chris Hogg.47:56
Effort on goal by Andrew Shinnie from just inside the penalty area goes harmlessly over the target.46:50
Chris Hogg gives away a free kick for an unfair challenge on John Sutton. Jamie Hamill takes the free kick.45:33 Booking
Booking Caution for Rudi Skacel.45:25
Assist by John Sutton.45:25 Goal scored
Goal! - Rudi Skacel - Hearts 1 - 0 Inverness Rudi Skacel finds the back of the net with a goal from inside the box to the bottom left corner of the goal. Hearts 1-0 Inverness CT.45:01
The second half has started.45:01 Substitution
Substitution Ryan Stevenson leaves the field to be replaced by Adrian Mrowiec.45:00 +1:35 Half time
Half Time The referee blows for half time.45:00 +0:57
Andy Webster concedes a free kick for a foul on Ross Tokely. Indirect free kick taken by Ryan Esson.45:00 +0:02
David Obua takes a shot. David Davis gets a block in.42:36
The referee blows for offside. Free kick taken by Ryan Esson.41:41
The ball is crossed by Josh Meekings, clearance made by Marius Zaliukas.40:03
Centre by David Templeton.37:21
The assistant referee signals for offside against Gregory Tade. Free kick taken by Marian Kello.35:31
Josh Meekings concedes a free kick for a foul on David Templeton. Ryan Stevenson produces a shot on goal direct from the free kick, Greg Tansey gets a block in.35:05
The referee blows for offside. Indirect free kick taken by Marian Kello.34:42
Centre by David Templeton, clearance by Ross Tokely.32:36
David Davis challenges David Templeton unfairly and gives away a free kick. Jamie Hamill has a direct shot on goal from the free kick, save by Ryan Esson.32:11
David Templeton takes a shot. Ryan Esson makes a save.30:34
Inswinging corner taken by Jamie Hamill from the left by-line, clearance made by Josh Meekings.28:02
Shot on goal by Ryan Stevenson from just inside the area goes over the target.27:04
Ryan Stevenson takes a shot. Ryan Esson makes a save.25:15
Ryan Stevenson handles the ball and concedes a free kick. Ryan Esson takes the free kick.24:46
The referee blows for offside against Gregory Tade. Free kick taken by Marius Zaliukas.23:44
Johnny Hayes sends in a cross.22:29
The referee blows for offside. Marius Zaliukas restarts play with the free kick.20:42
Free kick awarded for an unfair challenge on Kenny Gillet by Rudi Skacel. Free kick taken by Kenny Gillet.18:26
Inswinging corner taken by Jamie Hamill.18:05
Ryan Stevenson sends in a cross, Ross Tokely gets a block in.17:06
Andrew Shinnie produces a right-footed shot from outside the penalty area and hits the bar.15:52
Free kick awarded for a foul by Kenny Gillet on Ryan Stevenson. Jamie Hamill restarts play with the free kick.13:38
Ryan Stevenson is ruled offside. Indirect free kick taken by Ryan Esson.13:13
Direct free kick taken by Marius Zaliukas.13:13 Booking
Booking The referee shows Ross Tokely a yellow card.12:59
Foul by Ross Tokely on John Sutton, free kick awarded.12:34
Ryan Stevenson takes a shot. Save by Ryan Esson.11:36
The referee blows for offside. Marian Kello restarts play with the free kick.11:16
The ball is sent over by Johnny Hayes,10:41
The official flags John Sutton offside. Free kick taken by Ryan Esson.9:21
Jamie Hamill crosses the ball.8:41
Ross Tokely gives away a free kick for an unfair challenge on John Sutton. Free kick crossed right-footed by Jamie Hamill from left wing, clearance by Gregory Tade.7:33
Free kick awarded for a foul by Richie Foran on Eggert Jonsson. Free kick taken by Andy Webster.7:04
David Obua concedes a free kick for a foul on Josh Meekings. Ryan Esson restarts play with the free kick.6:45
Jamie Hamill produces a cross, clearance made by Josh Meekings.6:34
David Obua produces a cross, clearance by Ross Tokely.2:51
Rudi Skacel challenges Greg Tansey unfairly and gives away a free kick. Direct free kick taken by Chris Hogg.2:07
Direct free kick taken by David Davis.2:07 Booking
Booking Eggert Jonsson booked.1:57
Unfair challenge on Andrew Shinnie by Eggert Jonsson results in a free kick.0:40
Richie Foran fouled by John Sutton, the ref awards a free kick. Direct free kick taken by Kenny Gillet.0:00
The ref blows the whistle to begin the match.
Live data and text provided by our data suppliers