Celtic’s long unbeaten domestic run was under threat from St Johnstone until substitute Callum McGregor’s late strike earned the home side a 1-1 draw.
The Hoops, unbeaten in 52 previous games against Scottish opponents, went into the Ladbrokes Premiership encounter on a high after reaching the Champions League for the second successive season in midweek and being drawn against Bayern Munich, Paris St Germain and Anderlecht.
However, a slack clearance from goalkeeper Craig Gordon left Steven MacLean with time and space to knock the ball into the net.
Saints, the last Scottish side to beat Celtic in May 2016, survived a second-half onslaught until the 80th minute when McGregor, on for Anthony Ralston, eventually got the breakthrough with a low drive.
Both sides remain unbeaten in the league after four games, but it is Aberdeen who sit top of the table after their 4-3 win at Partick Thistle.
The afternoon did not start well for St Johnstone manager Tommy Wright, who had to turn to his bench after only a minute.
After around six minutes of treatment midfielder Murray Davidson was carried off on a stretcher with a head knock following an aerial duel with Hoops skipper Scott Brown and Aaron Comrie, the 20-year-old defender making his first Saints start.
Liam Craig took Davidson’s place and Saints looked comfortable enough as the game unfolded.
In the 21st minute Brown set up James Forrest at the edge of the box, but his low drive was well-saved by Saints keeper Alan Mannus down at his right-hand post.
However, the Perth side were not finding themselves under any sustained pressure and indeed on a break just on the half-hour mark Craig fizzed a shot over the bar.
The McDiarmid Park side went one step further with five minutes to go in the first half when Gordon’s nonchalant clearance was blocked by Craig back to the unmarked MacLean, who turned and from 12 yards casually stroked the ball past the Celtic keeper.
Celtic took some time to reassert themselves and, deep into the six minutes of time added on at the end of the half for Davidson’s injury, Scott Sinclair slalomed past four defenders but his drive from 16 yards was saved by Mannus.
Home boss Brendan Rodgers replaced OIivier Ntcham and James Forrest with Stuart Armstrong and Jonny Hayes for the start of the second half and in the 53rd minute Armstrong forced Mannus into a fine fingertip save under his bar with a 20-yard drive.
The treble-winners stepped up the pace, but Saints could have made it 2-0 when a brilliant cross from defender Brian Easton found MacLean, whose header from point-blank range was saved by Gordon, with the Saints striker toe-poking the loose ball into the side-netting.
McGregor replaced Ralston before Tom Rogic, amid relentless pressure, zipped a 30-yard drive inches past a post.
The Australian international and the Hoops support then claimed unsuccessfully for a hand ball when his drive was blocked in a packed St Johnstone penalty area.
There was uproar among the Hoops support in the 71st minute when MacLean was only booked by referee Willie Collum for lifting his arm at Celtic left-back Kieran Tierney.
Mannus made a terrific save from Leigh Griffiths’ powerful drive from the edge of the box, but he had no chance when, during yet another Celtic attack, the ball broke to McGregor and from 16 yards he fired past a throng of players into the net.
The final stages were frantic.
The home side kept driving forward and, from a quickly-taken Tierney free-kick, Sinclair struck the bar with an angled drive.
Mikael Lustig headed off the bar from a Griffiths corner and Mannus made a save at his back post from a Hayes header, with Saints hanging on through three tense added minutes for the point.