Saints keeper Peter Enckelman had made two great saves from Hooper before the former Scunthorpe striker broke the deadlock on the hour from a yard out following a corner, three minutes before Ki scored on the break to seal the win.
The only downside for Hoops manager Neil Lennon was the loss of stopper Daniel Majstorovic, who had to go off in the first half with a suspected fractured cheekbone after a clash of heads with Saints midfielder David Robertson, who was also replaced soon afterwards.
If the Sweden international's injury is as serious as first thought, it will rule him out of the visit of Kilmarnock next Saturday before what is shaping up to be a crucial Old Firm derby against Rangers at Parkhead on December 28.
However, Lennon will be happy with his side' seventh straight win in the SPL.
Unusually for the Irishman, he named an unchanged team with Hooper and Georgios Samaras leading the line, however, before the game many eyes were on the Hoops support.
The Parkhead club should find out tomorrow if they are to face any action from UEFA after a flare was thrown from the section holding Hoops fans before Thursday night's Europa League game against Udinese at the Stadio Friuli.
A banner which was insulting towards European football's governing body was also unfurled which led to condemnation from manager Neil Lennon, chief executive Peter Lawwell and chairman Ian Bankier.
There appeared to be nothing untoward coming from the away support who watched their side take time to get going, the first attempt on goal coming in the eighth minute when Hooper headed a Charlie Mulgrew cross wide of the target.
In the 14th minute, with the match stuttering along, Samaras drew a fine save from Enckelman with long-range drive, the Saints keeper gathering at the second attempt.
Saints were containing Celtic with some ease but stopper David McCracken was glad to see his header from Cha Du-ri's cut back, which spun up into the air, go over the bar for a corner as Enckelman backtracked to guard his goal.
On the half-hour mark Majstorovic and Robertson clashed heads and while the Celtic stopper was off for treatment - he was soon replaced by Thomas Rogne before Robertson was eventually replaced by Carl Finnigan - Hooper missed a great chance to open the scoring.
The Celtic striker latched on to a pass by Cha inside the St Johnstone box and appeared to sell Enckelman a dummy but the Saints keeper somehow got his hand to the shot to push it past the post for another corner which came to nothing.
Four minutes from the interval Finnigan fouled Hoops midfielder Ki 25 yards from goal, in the centre, but Mulgrew's free-kick was saved by Enckelman.
St Johnstone started the second half strongly and within a minute skipper Dave Mackay cut inside his Celtic counterpart Scott Brown and drove in a left-footed shot which Forster saved down low at his left-hand post.
Moments later, Celtic wide-man James Forrest eased past Mackay down the left and drove across the Saints' six-yard box, the ball, though, bouncing fortuitously off St Johnstone left-back Alan Maybury and into the arms of Enckelman.
Then, as the visitors reasserted themselves, Forrest ballooned a cross from Cha high over the bar from around eight yards out.
In the 57th minute Enckelman made another great save from Hooper at the near post after the Englishman had reached another fine Cha cross from the right but it delayed the inevitable only by moments.
After an hour Hooper squeezed the ball past Enckelman from around a yard out after Saints failed to clear a Mulgrew corner which was first contested by defender Victor Wanyama.
In the 63rd minute Celtic doubled their lead with a breakaway Ki goal after a flowing move involving Cha, Forrest and Samaras ended with the South Korean slamming in from 10 yards out.
The points were effectively sealed with Ki's goal and the visitors played out the rest of the game in control and can now turn their attention to their games over the festive season which might change the landscape at the top of the table.