Kilmarnock ended Hearts' hopes of a top-six finish in an entertaining game at Rugby Park.
Killie put in an excellent first-half display, with only the woodwork and some frantic goalkeeping from Anthony Basso keeping the visitors level.
Killie threatened from set-pieces with wickedly swerving deliveries and Craig Bryson almost capitalised in the third minute as Basso dallied before claiming, but the ball fell wide of goal.
James Fowler was denied by a smart low save after a break from midfield before Basso produced an excellent reaction stop in the 17th minute.
David Fernandez battled well to win the ball on the left before crossing to the far post where Danny Invincibile stretched to volley goalwards, only for Basso to spread himself well to save.
Basso produced another excellent reaction save in the 26th minute when David Lilley flicked on a Fernandez corner, but the keeper threw himself to his right to block.
Killie continued to look dangerous and Basso was rescued by Ibrahim Tall two minutes later, when he slid in bravely as Bryson looked certain to score.
Hearts had the woodwork to thank for keeping them level on the half-hour mark when Tim Clancy smacked the ball off the post from close range after Invincibile had knocked the ball down from another Fernandez corner.
Basso's work wasn't over for the first half yet, as he produced his best save of the bunch in the 35th minute, when he dived right to parry Clancy's driven cross which had been deflected by Hearts skipper Christophe Berra.
It was Hearts' turn to be denied by the upright ten minutes after the break when Berra met Laryea Kingston's free-kick. His header beat Alan Combe, but flicked the outside of the far post.
The Jambos looked more like a team needing to win to keep their season alive, and almost took the lead in the 68th minute. Christian Nade shot powerfully from ten yards, but Combe parried brilliantly.
The ball fell for Ruben Palazuelos who set himself and looked to have wrong-footed Combe, only for Frazer Wright to slide in to make a great block.
Basso hadn't had much to do in the second half, but he produced another great diving save to tip Mehdi Taouil's curling shot away in the 77th minute.
The match ended in controversy when Killie's Wright was shown a second yellow card for hauling back Nade. The big striker should have added to Wright's agony from the resulting free-kick, but he headed weakly into the ground.