Tynecastle Park was rocking come Bobby Madden's full-time whistle.
Hearts had taken the lead through Gary Mackay-Steven’s first-half strike. Celtic dominated the ball and got back into the match when Anthony Ralston waltzed through the home side's defence and fired past Craig Gordon.
But John Souttar came up with the goods with barely minutes left on the clock, heading Michael Smith’s cross over Scott Bain. Gordon still had to produce a magnificent save to deny James Forrest.
How did the Hearts players rate out of 10?
Player ratings scale - 10: One of the best performances you've seen. 9: Outstanding. 8: Very good. 7: Good. 6: Average. 5: Poor, 4: Very poor. 3: A terrible day at the office. 2: Abysmal. 1: One of the worst performances you've seen.

9. Josh Ginnelly - 7
The Englishman had one of his best games this season. Was probably Hearts’ most dangerous attacking player in parts with his pace and chipped in with his defensive work. Photo: Paul Devlin - SNS Group

10. Liam Boyce - 6
A quiet evening for the striker. Fed off scraps for large parts with Celtic dominating the ball and Hearts deep. Had a role in the goal with some hold up play in the box. Photo: Paul Devlin - SNS Group

11. Gary Mackay-Steven - 6
Took his goal very well at the back post to open the scoring. Posed a threat on the break with his pace but took the wrong option on a couple of occasions. Photo: Ross MacDonald - SNS Group

12. Armand Gnanduillet - 6
Gave Hearts a better target in the air for cross balls and caused a bit of uncertainty. Photo: Ross Parker - SNS Group

