The Paris Saint-Germain loanee set up James Forrest to open the scoring before rounding off a fine counter-attack from a St Johnstone corner to seal the points a minute from time.
However, victory came at a cost for Brendan Rodgers's side as Odsonne Edouard and James Forrest both hobbled off injured.
Having made all three substitutions by the time Forrest had to come off 10 minutes from time, Celtic were reduced to 10 men and then saw Kristoffer Ajer sent-off in stoppage time.
Celtic have won all five games without even conceding a goal since Scotland's winter break to bounce back from defeat to Rangers last month.
And but for Zander Clark in the St Johnstone goal, the margin of victory would have been much bigger for the visitors, who also saw two penalty appeals turned down.
Oliver Burke thought he should have had a spot-kick for Jason Kerr's last-ditch challenge early on, but referee Willie Collum deemed the defender got a touch on the ball.
Clark then made great saves from Burke, Jozo Simunovic and Edouard early in the second-half.
Edouard had to be carried off on a stretcher after being caught by Joe Shaughnessy's studs inside the penalty area 16 minutes from time, but again Collum waved play on.
Weah replaced the Frenchman and had an immediate impact with a fine touch and cross that allowed Forrest to stab home the opener.
The Scottish international then limped down the tunnel leaving Celtic to see out the last 10 minutes a man down.
However, they made the game safe when Scott Sinclair and Callum McGregor teed up Weah to finish off a rapid counter-attack for his third goal in four games since joining on loan in January before Ajer saw a second yellow card to reduce the visitors to nine men.