Hearts moved five points clear in third place in the Scottish Premiership as they piled the misery on Livingston, who have now lost 11 of their last 13 games.
Lawrence Shankland scored for a sixth consecutive game to secure the win, but only after missing a second-half penalty chance to break the deadlock.
Kenneth Vargas had given Hearts the lead two minutes after Shankland's miss and, while Andrew Shinnie's penalty did give Livingston hope, they were unable to find a leveller.
It was a tough day for David Martindale's side, who had Kurtis Guthrie's early header disallowed for offside, and they remain six points adrift at the bottom.
Keep up to date with LivingstonThe latest Hearts newsMore to follow.
Line-ups
Livingston
Formation 3-4-2-1
32Hamilton5DevlinSubstituted forNottinghamat 68'minutes6Obileye4ParkesBooked at 45minsSubstituted forMontañoat 45'minutes12Brandon22Shinnie18Holt29PenriceSubstituted forNoubleat 68'minutes16BradleySubstituted forYengiat 62'minutes8PittmanSubstituted forAndersonat 84'minutes28GuthrieSubstitutes
1George3Montaño9Anderson11Mackay19Nouble20Sangare21Nottingham23de Lucas33YengiHearts
Formation 3-5-2
28Clark2KentBooked at 60mins4Halkett3Kingsley21Sibbick5Haring77VargasSubstituted forOdaat 90+2'minutes8NieuwenhofBooked at 42minsSubstituted forDenholmat 89'minutes19Cochrane9ShanklandBooked at 45mins17ForrestSubstitutes
1Gordon11Oda16Halliday22Denholm24Pollock25Tait30Tagawa51Lowry54WilsonLive Text
Match ends, Livingston 1, Heart of Midlothian 2.
Second Half ends, Livingston 1, Heart of Midlothian 2.
Corner, Heart of Midlothian. Conceded by Andrew Shinnie.
Michael Nottingham (Livingston) wins a free kick in the defensive half.
Foul by Aidan Denholm (Heart of Midlothian).
Foul by Cristian Montaño (Livingston).
Yutaro Oda (Heart of Midlothian) wins a free kick on the right wing.
Foul by Andrew Shinnie (Livingston).
Lawrence Shankland (Heart of Midlothian) wins a free kick in the defensive half.
Jason Holt (Livingston) wins a free kick in the defensive half.
Foul by Aidan Denholm (Heart of Midlothian).
Corner, Heart of Midlothian. Conceded by Jack Hamilton.
Attempt saved. Alan Forrest (Heart of Midlothian) right footed shot from the left side of the six yard box is saved in the bottom left corner. Assisted by Lawrence Shankland.
Jason Holt (Livingston) wins a free kick in the defensive half.
Foul by Alex Cochrane (Heart of Midlothian).
Substitution, Heart of Midlothian. Yutaro Oda replaces Kenneth Vargas.
Attempt missed. Kurtis Guthrie (Livingston) header from the centre of the box misses to the left. Assisted by Joel Nouble with a cross.
Substitution, Heart of Midlothian. Aidan Denholm replaces Calem Nieuwenhof.
Foul by Tete Yengi (Livingston).
Peter Haring (Heart of Midlothian) wins a free kick in the defensive half.
How to play
Rate players out of 10 throughout or after the game. The rater will close 30 minutes after the final whistle.
Rating range key1 = Give it up10 = Pure perfection
Livingston
Squad number32Player nameHamilton
Squad number5Player nameDevlin
Squad number6Player nameObileye
Squad number4Player nameParkes
Squad number12Player nameBrandon
Squad number22Player nameShinnie
Squad number18Player nameHolt
Squad number29Player namePenrice
Squad number16Player nameBradley
Squad number8Player namePittman
Squad number28Player nameGuthrie
Squad number3Player nameCristian Montaño
Squad number9Player nameAnderson
Squad number19Player nameNouble
Squad number21Player nameNottingham
Squad number33Player nameYengi
Heart of Midlothian
Squad number28Player nameClark
Squad number2Player nameKent
Squad number4Player nameHalkett
Squad number3Player nameKingsley
Squad number21Player nameSibbick
Squad number5Player nameHaring
Squad number77Player nameVargas
Squad number8Player nameNieuwenhof
Squad number19Player nameCochrane
Squad number9Player nameShankland
Squad number17Player nameForrest
Squad number11Player nameOda
Squad number22Player nameDenholm