Diaz hit a two-run shot in the third inning and Donaldson had a two-run blast in the fourth to help make a winner of Toronto left-hander J.A. Happ.
The Blue Jays (4-2) touched up Chicago starter Miguel Gonzalez for three runs in both of those frames. Toronto turned the game into a rout with a seven-run eighth inning.
The White Sox (2-2) have dropped two in a row. Toronto will go for a sweep of the three-game series on Wednesday night.
Donaldson returned to third base after moving to designated hitter for four games due to a ‘dead-arm’ issue. He delivered a solid throw to first base for the third out after Happ gave up two singles in the first inning.
The White Sox put runners on again in the second as Tim Anderson led off with a single and Adam Engel walked. Nicky Delmonico singled to drive in Anderson.
In the bottom half, Yangervis Solarte led off with a double but was left stranded. The Blue Jays didn’t make the same mistake in the third.
Luke Maile led off with a double and was cashed in promptly when Diaz turned on a 1-0 pitch for his second homer of the year.
Toronto tacked on another run when Anderson booted a grounder off the bat of Randal Grichuk, allowing Justin Smoak to come home from third base.
Chicago halved the lead in the fourth inning as Anderson took Happ deep for a solo shot, his third home run of the season.
Toronto answered quickly as Kevin Pillar singled and came around to score on a Diaz double. Diaz was thrown out trying to stretch it into a triple.
Curtis Granderson followed with a two-out triple and scored when Donaldson hit his second homer of the year.
Chicago’s Avisail Garcia made it a 6-3 game in the fifth inning. His moon shot hit the facing of the 300 level, just under the hotel room windows at Rogers Centre.
Happ (1-1) allowed seven hits, one walk and four earned runs over 5 1/3 innings while striking out nine.
Gonzalez (0-1) was charged with five earned runs over five innings. He gave up eight hits and two walks while fanning four.
Diaz and Donaldson were at it again in the bottom of the sixth. Diaz hit a flare to reach base and advanced to second when Granderson flew out to the left-field corner.
Donaldson hit a liner off the top of the wall that brought Diaz home to restore Toronto’s three-run lead. Diaz left the game due to back spasms in the seventh inning and was replaced by Gift Ngoepe at shortstop.
Yolmer Sanchez hit a solo shot – his first homer of the year – off Toronto reliever Tyler Clippard in the eighth.
The Blue Jays batted around in the home half with Maile capping the carnage with a two-run double in his second at-bat of the frame.
Toronto outhit Chicago 15-10. Announced attendance was 17,451 and the game took three hours 27 minutes to play.