St Johnstone came agonisingly close to ending Celtic’s 52-game unbeaten domestic run but this was a magnificent result for the Perth men nonetheless.
Steven MacLean had given Saints a half-time lead, which they held on to until the 80th minute when substitute Callum McGregor levelled.
However some fine defending earned Tommy Wright’s side their draw and took them, along with Celtic, to the 10-point mark in the Premiership.
Both sides made one change from their last game. For Celtic, Tom Rogic came in for McGregor. Young full-back Aaron Comrie got his first start for Saints, with Richard Foster pushed into wide midfield and Stefan Scougall dropping to the bench.
The contest had barely started when Tommy Wright had to rip up his plans and start again.
Murray Davidson and Comrie clashed heads in the first minute. The medical staff took over six minutes to treat the former on the pitch and then stretcher him off. Davidson was replaced by Liam Craig.
Saints had a decent early chance when Michael O’Halloran picked out David Wotherspoon on the edge of the box on 11 minutes but the midfielder didn’t do the cut-back justice and his shot failed to trouble Craig Gordon.
The visitors were doing a good job of frustrating their hosts and a long-range shot from James Forrest was comfortably dealt with by Alan Mannus midway through the first half.
Just after the half-hour mark there was nearly a collector’s item – a 25-yard Craig right foot goal. The substitute’s effort was well-struck but if flew just over the bar.
Celtic Park wasn’t silenced by that but it was on 40 minutes when Saints opened the scoring.
Gordon made a hash of a clearance and when the ball was sent back into the danger area by Craig, MacLean was clinical with his finish. The Perth striker looked offside at first glance but full-back Anthony Ralston had played him on.
There were six minutes of injury time as a result of Davidson’s injury and midway through that period Scott Sinclair nearly equalised after beating three Saints defenders on his way into the box.
Brendan Rodgers made a double half-time substitution, with Jonny Hayes and Stuart Armstrong coming on for Forrest and Olivier Nitcham.
Celtic turned up the heat after the re-start and Leigh Griffiths sent a free-kick over the bar from the sort of range Joe Hart was beaten twice from at Hampden, and then an Armstrong effort was tipped over by Mannus shortly after.
It should have been Saints who scored next, though, when Brian Easton weighted a cross perfectly for MacLean, who headed straight at Gordon then toe-poked the rebound into the side-netting.
There was a controversial incident on 72 minutes when MacLean was booked for making contact with Kieran Tierney off the ball. With the Celtic fans baying for a red, referee Willie Collum deemed it to be worthy of just a yellow.
The Celtic pressure was building and with 10 minutes left Mannus was finally beaten by a fierce 18-yarder from McGregor.
That pressure didn’t stop there and from a quick free-kick on 86 minutes Sinclair rattled the bar from a narrow angle.
Mannus had been heroic for Saints and the Northern Irishman denied Sinclair again from close range.
Mikael Lustig headed on to the bar from a Griffiths corner with just a minute left of the 90 and Hayes nearly scored with an injury-time header but Saints held on for their point.