He scored in the 19th and 79th minutes as Toronto won for the first time on the road after four losses and a 3-3 tie at Columbus in its last match after it blew a three-goal lead.
Osorio, the team leader with four goals, made sure the Reds got the full points with the insurance goal, taking a pass in the box from Sebastian Giovinco, who collected his sixth assist.
Philadelphia has lost two straight after a four-game unbeaten streak.
Toronto goalkeeper Alex Bono made four saves, including stopping David Accam from close range in the 87th minute for his second shutout of the season. He made three saves to beat the Union 3-0 on May 4.
Osorio staked Toronto to the early advantage and Michael Bradley had the secondary assist with his pass to Victor Vazquez, who split the defense with a leading ball to spring Osorio for the calm finish from 16 yards.
The goal came three minutes after Philadelphia pierced the defense when Warren Creavalle found Fafa Picault on the left flank. After dribbling into the box, Picault was unable to place his shot past Bono.
Philadelphia came close to equalizing in the 21st minute, but Picault was offside when he redirected a try by Borek Dockal.
Picault had another chance to make it 1-1 in the 58th, but his 22-yard strike went off the crossbar.
Toronto hosts D.C. United on Wednesday. The Union don't have a league match until June 23 versus Vancouver, but they the New York Red Bulls in a Round of 16 match in the U.S. Open Cup on June 16.
Philadelphia 0-2 Toronto: Osorio double
Jonathan Osorio tallied a goal in either half for Toronto FC on route to a 2-0 win over Philadelphia Union.