Brendan Rodgers' men started the day two points clear atop the Scottish Premiership table as it seeks to win the title for the seventh year in a row.
But Hearts took the lead after 25 minutes at Tynecastle, 16-year-old Harry Cochrane rifling home his first goal for the club.
Former Rangers forward Kyle Lafferty doubled the Hearts lead before the break, driving a shot in off the post, with Manuel Milinkovic adding a third for the host three minutes after the interval.
And any slim hope of a Celtic fightback was extinguished when goalkeeper Craig Gordon brought down Ross Callachan, Milinkovic burying the penalty for his second of the day.
While Celtic has suffered a clutch of European defeats since Rodgers' appointment, this is the first time the former Liverpool boss has lost a match in a domestic competition during his reign at the club.
Celtic's loss will give Aberdeen hope they can end the club's recent dominance of Scottish football, Derek McInnes having rejected the chance to take over at Rangers to stay with the second-placed Dons.