Seranthony Dominguez (2-3) hit Biggio with a first-pitch slider with two outs to give the Blue Jays the first game of a two-game set.
Toronto starter Yusei Kikuchi allowed one run and four hits while striking out seven in six innings. He did not issue a walk.
Philadelphia starter Zack Wheeler allowed one run, three hits and four walks with five strikeouts in seven innings.
Both starters were in command early in the game.
Brandon Belt provided Toronto's first hit with a leadoff single in the fourth. Biggio walked with two outs before Alejandro Kirk grounded out to end the inning.
Kikuchi pitched around Bryson Stott's leadoff single in the fifth.
Edmundo Sosa opened the sixth with an infield single. Johan Rojas followed with an RBI double into the left field corner, and the Phillies led 1-0.
Whit Merrifield led off the bottom of the sixth with an infield single, Toronto's second hit of the game. Belt then walked. Vladimir Guerrero Jr. grounded into a double play, but George Springer's single scored Merrifield from third to tie the game at 1-1.
Yimi Garcia replaced Kikuchi and pitched around a walk and a stolen base in the seventh.
Toronto's Jordan Hicks (2-7) struck out the side in the top of the eighth.
In the home half of the inning, Dominguez walked pinch hitter Nathan Lukes to begin the frame. Merrifield followed with a line-drive single to left that bounced off Kyle Schwarber's glove. Guerrero walked with one out to load the bases. After Springer's grounder led to a forceout at home, Dominguez hit Biggio to force in the game-winning run.
Jordan Romano pitched a perfect ninth to earn his 29th save.
Blue Jays third baseman Matt Chapman (finger) did not play for the second straight game.
—Field Level Media