Odsonne Edouard's double helped Celtic come from behind to win 2-1 at St Johnstone and move to within 18 points of Rangers at the top of the Scottish Premiership.
Shaun Rooney's header had given the Saints a surprise lead five minutes into the second half, only for the champions to respond with two goals in the space of just two minutes and ten seconds, both from the in-form Edouard.
The France U21 international showed brilliant instincts to equalise on the hour-mark, before firing his side ahead minutes later with a neat finish, the striker's sixth in his last six matches.
That was enough to hand Neil Lennon's side a fourth straight win as they moved to within 18 points of leaders Rangers, with a game in hand, while St Johnstone stay eighth.
St Johnstone: Clark (6), Kerr (7), Gordon (6), McCart (6), Rooney (7), Bryson (6), McCann (6), Booth (7), Conway (6), Kane (6), Wotherspoon (7)
Subs: Middleton (6), O'Halloran (6), May (6)
Celtic: Bain (6), Kenny (6), Duffy (6), Ajer (7), Taylor (8), Rogic (8), Brown (6), McGregor (7), Turnbull (7), Christie (8), Edouard (9)
Subs: Griffiths (6), Elyounoussi (6)
Man of the match: Odsonne Edouard
How Celtic stayed in touch with Rangers
With Rangers once again winning on Saturday, the visitors knew that nothing less than three points would do at McDiarmid Park against opponents they had not lost to in their previous 14 league meetings.
Celtic created the best opening of the first period when Edouard broke free down the left, before finding the unmarked Tom Rogic at the far post, only for the Australian's shot to be brilliantly cleared off the line by the covering Callum Booth.
However, the champions did not have it all their own way and it was Callum Davidson's team, who have a League Cup final with Livingston at the end of February, who made the breakthrough just after half-time.
The well-worked move started down the left and after an interchange of passes, Booth's deep centre picked out Rooney at the back post and the defender rose highest of all to power a header home for his fourth goal for the Saints and first in Perth.
The hosts made three changes from the team that won 2-1 at Livingston last weekend, with Callum Booth, Craig Bryson and Craig Conway all starting in place of Scott Tanser, Liam Craig and Guy Melamed.
Meanwhile, Celtic boss Neil Lennon made two changes from the side that beat St Mirren in midweek, with the injured Stephen Welsh replaced by Shane Duffy at the back, while Ryan Christie came in for Albian Ajeti, who dropped to the bench.
That surprise goal, though, brought about a swift and decisive response from Celtic as Edouard showed why he is a forward in demand.
The frontman's first strike to bring the visitors level was all about anticipation as after good work down the left from Ryan Christie, there was the arch poacher in the six-yard box to acrobatically equalise.
Edouard was then on hand to finish off a neat move again involving Christie, whose clever dummy saw Greg Taylor escape to the left byline and cross for the Frenchman to twist and turn in a tight space to fire home his 20th goal of the season.
What the managers said...
St Johnstone boss Callum Davidson: "It's a real difficult one to take. We're walking off from the game thinking, 'How did we lose the game?'
"Second half, we asked the players to be a bit braver on the ball. I thought we were and got a deserved goal.
"But with Celtic you need to make sure you defend properly and have that mindset of not conceding too soon after you score.
"The longer it goes on you can frustrate them and hopefully get the victory.
"But I'm really disappointed with the way we defended our box for the two goals.
"You can say it's good play from them but for me we've got to do better initially with the back pass to Zander on his left foot then the challenges after that. We didn't get near them and allowed them to score too easy."
Celtic boss Neil Lennon: "It was a very good performance.
"We took a blow with the first real attempt St Johnstone had on goal but our reaction was excellent.
"We scored two brilliant goals and we could have won the game by a lot more.
"The body language and performances are very good at the minute. We are not grinding out results, we are playing very well.
"Odsonne is back to is his best. Not just his goals but his play in general, particularly second half, was superb.
"He is definitely looking more and more like the player he was last season.
"I thought Christie was good, bright and energetic. Tom Rogic had a good game. Greg Taylor had another fine game and we defended resolutely at times when we needed to.
"Again, that's something we haven't done as well as we could have done this year."
Man of the Match - Odsonne Edouard
Earlier in the season Edouard looked off colour and was misfiring in front of goal, but boy has the striker returned to form with a bang in recent weeks with some crucial goals for his team.
And the Frenchman was at it again at McDiarmid Park on Sunday lunchtime, scoring twice in quick succession as the champions came from behind to record a victory that just about keeps their title hopes alive.
Both were predatory efforts, but typical of the forward, who in the process became the first Celtic player to score 20 goals in three consecutive seasons since Gary Hooper managed the feat (2011-2013).
St Johnstone travel to Motherwell next Saturday at 3pm, while Celtic host Aberdeen on Wednesday at 6pm.