The home side were forced to cancel training on Thursday after seven members of the squad were hit with a virus but they showed no ill effects as they fought back from a goal down to claim their first victory of the campaign.
Kris Commons had given the Hoops a fourth-minute lead with a fierce strike from 20 yards and nearly had another before Rowan Vine set up Gregory Tade to fire home an 18th-minute equaliser.
Chances were more restricted in the second period but with 10 minutes remaining, Vine curled a stunning shot past Fraser Forster to put St Johnstone in front.
The result leaves Celtic, who open their Champions League campaign against Benefica at Parkhead on Wednesday, with just two wins from their opening five SPL matches.
"We got off to a great start and let the game get away from us," said Celtic manager Neil Lennon.
"We didn't do the basics well at all and there were far too many of our consistent performers off form. We have to give credit to St Johnstone but I'm very disappointed with that."
St Johnstone manager Steve Lomas praised the character of his side after they ended their longest winless run in 34 years.
"The most pleasing thing was after losing an early goal we showed character and what our team is all about," Lomas said
"It is just rewards for the players for a lot of good performances. The quality of the finish from Rowan Vine for the winner was exceptional and all credit to the boys to keep believing."
At McDiarmid Park, Celtic captain Scott Brown started his first SPL game of the season and had a hand in Celtic's early opener.
The Scotland international won the ball in midfield and picked out Hooper, who laid it off for Commons to take a touch before sending an angled low drive past Alan Mannus from outside the area.
St Johnstone were rocked by the goal and could have found themselves further behind three minutes later when Murray Davidson's attempted clearance only went as far as Commons, who tested Mannus with a fierce strike.
This spurred the home side into action and they came close to an equaliser in the 10th minute when Forster had to scramble to tip Dave Mackay's curling free-kick over the bar.
St Johnstone grabbed a deserved leveller eight minutes later. Vine raced down the left before cutting in and feeding Tade, who rifled a shot on the turn past the helpless Forster.
Celtic had a penalty appeal turned down in the 26th minute when Commons appeared to be hauled down by Steve Anderson in the box after seizing on the defender's weak headed back-pass, but referee Euan Norris waved away his protests.
St Johnstone had a chance to take the lead right on half-time when Tade laid the ball off to Peter Pawlett 10 yards out, but he blasted over.
Teenage striker Tony Watt and new signing Lassad came on for Celtic after the interval as the Hoops tried to find a winner.
But it was St Johnstone substitute Nigel Hasselbaink who made a bigger impact in the 80th minute.
He picked out Vine at the edge of the box and the midfielder held off Mikel Lustig to curl a superb shot into the top corner and past the outstretched arm of Forster.
Mannus was the hero in stoppage time when he rushed out to block Watt's shot with his legs.
Source: AFP
Source: AFP