Colin Kazim-Richards fired home his first league goal for Celtic in the 16th minute, but the Hoops were stunned in the 57th minute as Abiola Douda scored a superb equaliser for Hearts following a surging run.
On-loan Manchester City winger Patrick Roberts restored Celtic’s advantage in the 66th minute as he pounced on a loose ball to slot past Neil Alexander.
Leigh Griffiths then took advantage of a John Souttar error to rifle home his 39th goal of the season in the 85th minute to start the celebrations amongst the travelling support at Tynecastle.
Celtic, who are now 12 points ahead of Aberdeen, will win their 47th league title if the Dons fail to defeat Motherwell later today.
Following a bright start, Celtic thought they had taken an 11th minute lead when Callum McGregor fired past Alexander after the keeper had parried a shot from Roberts but the midfielder’s effort was ruled out after a very tight offside decision.
Hearts ‘keeper Alexander then made excellent saves to deny Roberts and Griffiths and frustrate the travelling Celtic support.
However, the Hoops didn’t have to wait long for another opportunity and Kazim-Richards fired Celtic in front.
The Turkish striker showed great skill to control a Mikael Lustig cross on his chest before smacking a half-volley through the legs of Alexander.
Hearts came close to an immediate equaliser but Jamie Walker’s fierce strike was denied by an instinctive save by Craig Gordon.
Griffiths should have restored Celtic’s advantage in the 40th minute when he latched on to a long ball over the top to race in on goal, but his shot was brilliantly blocked by the legs of Alexander before squirming out for a corner.
At the other end Gordon made a good save to tip Djoum’s strike round the post after the Celtic defence had allowed him plenty of room.
Hearts’ impressive start to the second half was rewarded when Dauda equalised. The substitute latched onto Walker’s pass before holding off three Celtic defenders as his surging run ended with a low angled shot back across Gordon and into the far corner of the net.
Lustig sent a header on to the roof of the net before Roberts restored Celtic’s advantage.
The winger pounced on a loose ball as the Hearts defence played a dangerous game in front of their own box and the on-loan Manchester City star got in front of Souttar to race in on goal before slotting through the legs of Alexander.
Souttar’s day got worse in the 85th minute as his mistake allowed Griffiths to add a third for Celtic. The Hoops striker charged down Souttar’s attempted clearance and then nutmegged him before rifling a low shot beyond Alexander.