Vancouver (1-0-1, 4 points) looked like it had secured the win with goals by Cristian Dájome on a penalty kick in the 55th minute and Andy Rose for a 2-1 lead in the 70th after Luke Singh put Toronto (0-1-1, 1 point) ahead in the seventh minute.
But Osorio, who entered in the 61st minute after missing the season opener vs. Montreal because of a thigh injury, was the recipient of a few fortunate bounces.
Rose was trying to clear the ball from his own box when the pass hit teammate Michael Baldisimo in the face and caromed to Osorio. His shot was saved by Maxime Crepeau but the ball went behind him into the goal.
Singh made it 1-0 with the defender's first goal in second MLS match. The 20-year-old from Brampton, Ontario, signed a homegrown player contract on April 16.
Dájome tied it with a precision kick from the spot after Richie Laryea's lunging tackle at Lucas Cavallini resulted in the penalty. Dájome then put the shot out of the reach of Bono and off the right post.
Before Rose's goal, Russell Teibert drew a yellow-card foul on Omar Gonzalez to set up the free kick on the left side. Cristián Gutiérrez earned his second assist of the season with a service that Rose knocked in from 7 yards.
Toronto's next match is Tuesday in Tampa against Cruz Azul of Mexico in the first leg of CONCACAF Champions League quarterfinals.
Vancouver hosts Colorado in Sandy, Utah, on May 2.