Celtic did well to keep "grinding", according to manager Brendan Rodgers, as Oh Hyeon-gyu's late strike saw the league leaders come from behind to beat a spirited St Mirren.
Conor McMenamin nodded Stephen Robinson's side in front early on, before David Turnbull's fine finish from the edge of the box levelled the scores.
Turnbull missed from the penalty spot just before the break, but with just seven minutes left, Oh fired beyond Zach Hemming to secure all three points and maintain Celtic's advantage at the top of the Scottish Premiership.
St Mirren remain third but, for a time, they might have been within five points of the leaders.
"You have to keep grinding in games like that," Rodgers said. "The winning goal is a real testament to the calmness and quality of the team. In the right moment we speed up the game and Oh scores a great goal.
"In the midst of a busy period it's a really important win."
The latest Celtic newsKeep up to date with St MirrenPodcast: Reaction to night of dramaRobinson had called for his players to raise their already high levels for this game, and they certainly started brightly.
Their early pressure was rewarded when Greg Kiltie whipped in a dangerous ball from the left, McMenamin found space among a static Celtic defence, and the Northern Irishman planted his header past Joe Hart into the corner.
Turnbull returned to the starting line-up in place of the injured Reo Hatate and reminded home fans of his ability when Matt O'Riley created space and found his fellow midfielder, who smashed a wonderful strike into the top corner.
What an impact to ease early frustrations.
However, Turnbull was unable to add a second after a Video Assistant Referee (VAR) review determined that Alex Gogic had handled inside the box.
Turnbull's spot-kick cannoned of Zach Hemming's upright, the goalkeeper then denied Luis Palma on the follow-up and the chance was gone.
James Forrest and Yang Hyun-Jun were both denied by Hemming from close range as Celtic pushed for a winner.
They increasingly dominated the ball and territory but came up against a St Mirren side determined to get something.
They found that vital winner, though, when two substitutes combined.
Odin Thiago Holm played a delightful pass into the path of South Korean striker Oh and he finished emphatically to clinch a vital three points.
Player of match - Oh Hyeon-gyu (Celtic)
One moment can make the difference and the nod goes to Oh. He's cut a frustrated figure for much of his Celtic career but that goal may prove a real springboard.Oh takes chance with vital goal - analysis
Celtic came into this after a frustrating draw at Easter Road against Hibernian, perhaps feeling the intensity of their schedule. Rodgers made a few changes that didn't seem to pay off, with recent stand-out O'Riley largely nullified apart from his assist.
Turnbull did make an impact with the equaliser but might have made this a far more straightforward game for his side had he converted the penalty.
Oh did take his chance and finally delivered a goal could prove so important in the long run, for both him and Celtic.
St Mirren are a side bang in form. They came with a clear plan and it so nearly worked. They rode their luck at times but offered an overall performance that showed why they are where they are.
When they fell behind they still mustered a threat despite that blow.
They are a very good side and this experience at Celtic Park will only add to their belief. There's no reason they can't stay in third. None at all.
What they said
Celtic manager Brendan Rodgers: "We made a slow start - just too passive, weren't aggressive enough with or without the ball, and they deservedly went in front.
"After that we sped up the game. They are very well coached so we knew they would have moments, but we kept going. We should have gone in front, we missed the penalty, and that's something as a team we have to be better at.
"Second half we kept going, and the subs come in and make the impact you want."
St Mirren manager Stephen Robinson: "It's a negative in terms of the result, but we wont be taking any negativity for too long. All the good bits we did, we have to keep improving on those.
"There's a big disparity between the clubs but there's not a huge disparity in terms of the playing staff, because when you're organised and disciplined you can show your quality within that.
"Zach Hemming has produced three or four world-class saves and we had opportunities to grab a draw."
What's next?
Celtic travel to Dingwall for the early kick-off on Saturday against Ross County (12:30 GMT). St Mirren don't play this weekend and host Hibernian next Wednesday (19:45).
Line-ups
Celtic
Formation 4-3-3
1Hart2Johnston6Phillips5Scales3Taylor33O'RileySubstituted forHolmat 68'minutes42McGregor14TurnbullSubstituted forOhat 74'minutes49ForrestSubstituted forYangat 56'minutesBooked at 64mins8FuruhashiBooked at 45mins7PalmaSubstituted forMaedaat 56'minutesSubstitutes
13Yang15Holm17Nawrocki19Oh24Iwata28Gonçalves Bernardo29Bain38Maeda56RalstonSt Mirren
Formation 3-4-3
1Hemming22Fraser13Gogic5TaylorBooked at 90mins23StrainSubstituted forDunneat 81'minutes15Boyd-MunceSubstituted forFlynnat 88'minutes6O'Hara3Tanser10McMenaminSubstituted forGreiveat 65'minutes20OlusanyaSubstituted forMandronat 65'minutesBooked at 82mins11KiltieSubstituted forNahmaniat 88'minutesSubstitutes
2Bolton8Flynn9Mandron16Small18Dunne19Nahmani21Greive24Jamieson27UrminskyLive Text
Match ends, Celtic 2, St. Mirren 1.
Second Half ends, Celtic 2, St. Mirren 1.
Offside, St. Mirren. Charles Dunne tries a through ball, but Mark O'Hara is caught offside.
Corner, Celtic. Conceded by Zach Hemming.
Attempt saved. Kyogo Furuhashi (Celtic) right footed shot from the centre of the box is saved in the top centre of the goal. Assisted by Odin Holm.
Foul by Oh Hyeon-Gyu (Celtic).
Alex Gogic (St. Mirren) wins a free kick in the defensive half.
Richard Taylor (St. Mirren) is shown the yellow card for a bad foul.
Yang Hyun-Jun (Celtic) wins a free kick on the left wing.
Foul by Richard Taylor (St. Mirren).
Substitution, St. Mirren. Stav Nahmani replaces Greg Kiltie.
Substitution, St. Mirren. Ryan Flynn replaces Caolan Boyd-Munce.
Yang Hyun-Jun (Celtic) wins a free kick in the defensive half.
Foul by Mikael Mandron (St. Mirren).
Attempt saved. Mark O'Hara (St. Mirren) header from the centre of the box is saved in the centre of the goal. Assisted by Scott Tanser with a cross.
Attempt blocked. Greg Kiltie (St. Mirren) right footed shot from the centre of the box is blocked.
Goal! Celtic 2, St. Mirren 1. Oh Hyeon-Gyu (Celtic) right footed shot from the centre of the box to the top left corner. Assisted by Odin Holm.
Mikael Mandron (St. Mirren) is shown the yellow card for a bad foul.
Liam Scales (Celtic) wins a free kick in the defensive half.
Foul by Mikael Mandron (St. Mirren).
Player of the match
HemmingZach Hemming
with an average of 7.58
Celtic
Squad number33Player nameO'Riley
Squad number5Player nameScales
Squad number19Player nameOh Hyeon-Gyu
Squad number13Player nameYang Hyun-Jun
Squad number15Player nameHolm
Squad number7Player namePalma
Squad number42Player nameMcGregor
Squad number1Player nameHart
Squad number38Player nameMaeda
Squad number2Player nameJohnston
Squad number14Player nameTurnbull
Squad number8Player nameFuruhashi
Squad number6Player namePhillips
Squad number3Player nameTaylor
Squad number49Player nameForrest
St Mirren
Squad number1Player nameHemming
Squad number10Player nameMcMenamin
Squad number5Player nameTaylor
Squad number22Player nameFraser
Squad number13Player nameGogic
Squad number3Player nameTanser
Squad number6Player nameO'Hara
Squad number23Player nameStrain
Squad number15Player nameBoyd-Munce
Squad number20Player nameOlusanya
Squad number11Player nameKiltie
Squad number8Player nameFlynn
Squad number9Player nameMandron
Squad number21Player nameGreive
Squad number18Player nameDunne
Squad number19Player nameNahmani