Jose Abreu had three hits with two RBI and scored the winning run as Chicago won for the second time in nine games. The White Sox avoided what would have been their first sweep in Toronto since 2009.
David Robertson, who blew the save in Tuesday's 10-9 loss when Blue Jays slugger Josh Donaldson hit a walkoff homer, got burned again when Donaldson tied it at 3 with a solo homer into the second deck in the ninth.
Donaldson's fourth homer in three games denied Jeff Samardzija his third straight win. Samardzija allowed one unearned run and eight hits in seven innings.
It was the first time Osuna had allowed a run since April 27 at Boston, ending a streak of 11 scoreless outings.
Robertson (4-1) allowed a single and a walk in the bottom half but got Danny Valencia to ground into a fielder's choice for the final out.
Originally scheduled as an evening start, the game was moved to the afternoon because the White Sox are playing a doubleheader in Baltimore Thursday, making up games from April 27 and 28 that were postponed by protests and civil unrest in the city.
Attendance was 15,463.
Chicago opened the scoring in the third. With two outs and men at first and second, Abreu lifted a fly ball to shallow right that Ezequiel Carrera lost in the sun. The ball ticked off Carrera's glove and dropped for a two-run double.
J.B. Shuck made it 3-0 with a two-out RBI single in the sixth.
Toronto got its first run on Donaldson's sacrifice fly in the seventh, then cut it to 3-2 on pinch-hitter Justin Smoak's RBI single off Zach Putnam in the eighth. Zach Duke came on and got pinch-hitter Valencia for the final out of the eighth, stranding runners at the corners.
White Sox: OF Avisail Garcia (right knee) missed his second straight game.
Blue Jays: 2B Devon Travis (left shoulder) took groundballs before the game and hopes to start swinging again soon. ... C Dioner Navarro (left hamstring) went 0 for 1 with two walks and a sacrifice fly in his second rehab game at Triple-A Buffalo.
White Sox: LHP Chris Sale (3-2, 4.21) will pitch the opening game of Thursday's doubleheader at Baltimore, with RHP Chris Beck coming up from Triple-A Charlotte to make his major league debut in the second game. Beck is 3-2 with a 3.30 ERA in eight starts at Triple-A. RHP Tyler Wilson (1-0, 4.50) will start Game 1 for Baltimore and RHP Mike Wright (1-0, 0.00) starts Game 2.
Blue Jays: Toronto is off Thursday before beginning a three-game series at Minnesota on Friday. LHP Mark Buehrle (5-4, 5.13) faces RHP Trevor May (3-3, 4.95) in the opener. Buehrle has lost his past two starts.