Glasgow (AFP) - Giorgios Giakoumakis netted a 95th-minute winner for Celtic in a dramatic finale to clinch a 2-1 win for the Scottish Premiership champions at St Johnstone.
The much-changed Hoops looked set to drop points for the second time in three league games when defender Alex Mitchell slotted in an equaliser for the hosts in the third minute of added time.
But Giakoumakis turned home Alexandro Bernabei's cross with virtually the last kick of the game to keep Celtic two points clear of Rangers, who were 4-0 winners over St.Mirren.
"We should have finished it off a lot earlier than wait until the last minute but it's important to show the character," said Celtic boss Ange Postecoglou.
Celtic were beginning an extended spell without captain Callum McGregor after the midfielder suffered a knee injury in the midweek Champions League defeat by RB Leipzig.
McGregor was suspended for the trip to Perth, but Postecoglou confirmed ahead of kick-off that the Scotland international would be unlikely to return before the World Cup break.
Postecoglou made six changes in all from the team that started the 3-1 loss to Leipzig with one eye on a second crack at the Germans on home soil on Tuesday.
Matt O'Riley's deflected shot from 22 yards hit the outside of the post but St Johnstone held out until the 42nd minute when Sead Haksabanovic's cross was turned into his own net by Andrew Considine at the near post.
Postecoglou's men were guilty of passing up a number of chances to kill the game off and had two goals from Giakoumakis and Daizen Maeda ruled out for offside.
Celtic were then punished for some very slack defending as Mitchell brought down Ali Crawford's free-kick and stroked home from six yards.
But misfortune struck the Saints moments later as Drey Wright pulled up with cramp, allowing Bernabei to scamper clear down the left and his low cross was bundled in by Giakoumakis for his fourth goal of the season.
Rangers had a far more comfortable afternoon as Antonio Colak scored twice for the third consecutive league game.
The Croatian was surprisingly left out of Giovanni van Bronkhorst's starting line-up for a 2-0 defeat to Liverpool in midweek and made his case to be included when the Reds visit Ibrox on Wednesday in the Champions League.
After Colak opened the scoring inside four minutes, James Tavernier slotted home a penalty before half-time.
Colak doubled his tally 17 minutes from time before Fashion Sakala struck in stoppage time.
Hibernian moved up to third as Ryan Porteous scored the only goal in a 1-0 win over 10-man Motherwell.
Ross County moved out of the bottom two with a 1-0 victory at Livingston.