The Hoops had performed well only to lose 2-0 to AC Milan in their Champions League Group H opener in the San Siro on Wednesday night but they responded with a first-half blitz of the visitors.
In a one-sided first half, Finnish striker Teemu Pukki, making his first start for his new club, opened the scoring with a drive in the 10th minute with midfielder Charlie Mulgrew adding a second in the 26th minute with fine left-footed shot.
The second half was mostly a non-event until Perth substitute Liam Caddis, on for David Wotherspoon, bundled in a Dave MacKay cross with nine minute remaining before another Saints replacement, Stevie May, hit the post in added time with the Hoops hanging on for the final whistle.
Aberdeen brought Inverness' six-game unbeaten run to an end with a 1-0 victory.
The damage was done by substitute Scott Vernon, who sent a glorious strike past on-loan Luton Town goalkeeper Dean Brill with 10 minutes remaining at Pittodrie.
Strikers James Collins and Paul Heffernan heaped yet more doubt on Danny Lennon's long-term prospects as St Mirren boss as they gave Hibernian a 2-0 win at Easter Road.
The duo were combined for the first time a week ago as they both struck to confirm victory at St Johnstone and they repeated the feat to give the Leith side a third Scottish Premiership victory of the season.
St Mirren have taken a mere point from the 18 they have contested so far, mainly due to their shambolic defending.
Kilmarnock were left searching for their first win of the season despite a spirited comeback against Partick in the Scottish Premiership.
Thistle dominated the first half at Firhill and headed into half-time with a deserved lead after Aaron Muirhead successfully converted from the penalty spot.
Killie threw themselves a lifeline after the break thanks to a Kris Boyd leveller early in the second half but could not find a second goal to secure the elusive victory as the match ended 1-1.
Ross County left it late to claim all three points against Hearts as two goals in the last two minutes guided them to a dramatic 2-1 victory at Global Energy Stadium.
County looked down and out as Hearts led thanks to a Callum Paterson goal midway through the first half after the home side had dominated.
Despite County's ascendancy, they did not look like they were going to find the net until a dramatic finish.
Substitute Melvin De Leeuw turned the game County's way with a goal in the 89th minute before he crossed for Richard Brittain to head home in injury time.
In Celtic's match, Manager Neil Lennon made two changes to his side following the trip to Italy.
Pukki came in for Georgios Samaras who started on the bench while wide-man Derk Boerrigter replaced right-back Mikael Lustig who dropped out altogether.
Saints manager Tommy Wright made three changes with Brian Easton, Chris Millar and Gary McDonald in, and Tom Scobbie, Nigel Hasselbaink and May dropping to the bench and they took to the field in an AC Milan-style red and black kit.
The home side's domination of possession from the kick-off was almost total.
Saints' 10-man defence situated themselves at the edge of their own box and repelled a series of Hoops attacks.
Striker Anthony Stokes set up the opener when he played a clever ball to Pukki inside the box and from 10 yards out the former Schalke forward drove it low between the legs of Saints defender Frazer Wright and keeper Alan Mannus.
An old-fashioned thrashing looked on the cards as wave after wave of green and white attacks threatened to engulf the Perth men.
There was no respite for St Johnstone. A sweeping move started by full-back Adam Matthews, the game's best player in the first half, ended with Pukki knocking Stokes' cross from wide on the right past the near post.
Celtic's second goal came when Saints midfielder Wotherspoon cut out a Stokes pass only for the ball to spin to Mulgrew, who set himself before drilling it low past Mannus from 25 yards.
Five minutes later, with the McDiarmid Park side retreating into their box as Celtic surged forward again, Mulgrew curled a shot from 25 yards just past the post before Boerrigter made a mess of a Stokes cross from six yards, knocking it wide when it appeared easier to score.
Israel midfielder Nir Biton replaced Matthews for the start of the second half to make his home debut, with Efe Ambrose moving to right-back and Mulgrew going back to the centre of defence alongside Virgil van Dijk.
Stokes fired wide from the edge of the box a few minutes into the second period but the match went flat.
St Johnstone had more of the ball without looking as if they would threaten.
Samaras replaced Commons just on the hour mark before May came on for Perth midfielder Murray Davidson.
As the match continued to drift aimlessly, May headed a cross from Wotherspoon over the bar with what was Saints' best chance to that point.
Stokes then had a header from a Mulgrew corner cleared off the line by MacLean as Celtic looked to finish with a flourish.
However, the ending was at odds with the earlier script.
In the 79th minute Celtic's hitherto under-worked keeper Fraser Forster had to make a good save from Millar after the Saints midfielder had burst right through the Hoops defence.
Celtic let their guard slip even further and allowed Saints back into the game when MacKay's cross from the right was knocked in from close range by Caddis, who nipped in front of Ambrose to set up a fraught ending for the home side.
As the nerves jangled among the home support, May hit the post in injury time with a glancing header before Forster made a fine save from MacKay as the home side held out for the three points which should have been secured by the interval.