Craig, who Hibs boss John Hughes had as a player at Falkirk, sprang from the bench after an hour and effectively snatched all three points for the hosts 15 minutes later.
Saints' victory was assured in injury time as substitute Haber ran through to add a second.
The defeat left Hibs winless since the opening weekend of the season and the boos of the visiting support at the full-time whistle made their feelings clear.
St Johnstone's preparations for the match were overshadowed by the fallout from last weekend's 1-0 defeat to Dundee United when defender Steven Anderson was shown two yellow cards by referee Brian Winter but was allowed to remain on the pitch.
Despite the eventual one-match ban meted out by the SFA not kicking in until this Thursday and being free to face Hibs, the stopper was notable by his absence from the home line-up.
Seeking their first win since mid-August, Hibs were forced to work hard to keep St Johnstone at bay in a strong opening from the hosts.
However, it was the visitors who created the first opening in the sixth minute, only for Derek Riordan - seeking his fourth goal in four league games - to miscue his volley from Liam Miller's cross.
Within a minute, Saints had registered the first shot on target at the other end, but skipper Jody Morris' volley from the edge of the box was too tame to trouble Hibs keeper Mark Brown.
Perth midfielder Murray Davidson headed a looping Jennison Myrie-Williams cross over from point-blank range after climbing high above Brown in the Hibs goalmouth in the 26th minute before Colin Nish headed Riordan's free-kick wide two minutes later.
However, after half an hour of tentative sparring, the Perth outfit finally came within a whisker of the opener.
Danny Grainger's inswinging free-kick from the right touchline was met forcefully by Michael Duberry but the defender's header crashed back off the crossbar.
Seconds later, David Wotherspoon, a former McDiarmid Park ball-boy, waltzed his way past Grainger at the other end but home keeper Peter Enckelman beat down and held at the second attempt the midfielder's shot.
The second half began as the first had finished, in disappointing fashion, and when Hibs had the ball in the net after 52 minutes the whistle had long gone for offside against Derek Riordan.
On the hour mark, it was St Johnstone's turn to threaten the deadlock.
A long ball found its way through to Myrie-Williams on the left side of the penalty area but, after tricking his way past marker Michael Hart, his shot was deflected wide.
Six minutes on, substitute Craig almost made an immediate impact but sent his free header from Grainger's left-wing cross three feet too high.
With only 18 minutes remaining, it was Hibs' turn to probe for the breakthrough.
Hart played a perceptive pass down the line for Wotherspoon and he picked out Riordan but the striker fizzed his shot the wrong side of Enckelman's left-hand upright.
And three minutes later, the visitors found themselves behind.
Grainger, the provider of virtually every dangerous set-piece for Saints, fired in a corner from the left and Craig stole in front of his marker to power his front-post header high into the net from six yards out.
Fellow replacement Haber forced Hibs keeper Brown into a diving save as the McDiarmid Park outfit looked to press home their advantage.
The goal left Hibs with little time to work their way back into the game and when skipper Kevin McBride's long-range shot flew high and wide it was clear the visitors had run out of ideas.
And, as the game drifted into injury-time, Saints added a second.
Enckelman's long kick was allowed to slip through the centre of the Hibs defence by Sol Bamba and late replacement Haber ran onto slot coolly past Brown.