He's used to this.
"This team's done well," Buck said. "We've been fighting all year. A lot of teams fold like that, and I think it shows the character of the guys."
Toronto has four wins when trailing after seven innings and 10 come-from-behind victories in all.
Gonzalez's shot off J.J. Putz (0-2) came after Vernon Wells walked with two outs and Lyle Overbay singled. He then drove a 1-2 fastball down the middle about 10 rows deep in left field for his ninth homer.
"I threw a splitter, which really didn't do anything," Putz said. "The whole inning, my splitter was good. It was the right pitch. It just didn't do what it was supposed to."
Gonzalez's drive made a winner of Scott Downs (1-3), who pitched two scoreless innings, and made up for a fly to center with the bases loaded to end the eighth.
"He's that kind of kid," Toronto manager Cito Gaston said. "He's not going to quit. As I said earlier in the year, hes not one of the kids I have trouble with."
Buck, who hit a two-run homer off Mark Buehrle, gave Toronto a 4-3 lead with a solo shot in the ninth off Bobby Jenks. Kevin Gregg, seeking his ninth save in as many chances, gave up a leadoff homer to A.J. Pierzynski in the bottom half that tied it.
Both teams got solid performances from their starting pitchers, with Toronto's Shaun Marcum going into the eighth and Buehrle finishing eight innings.
The game was sailing along until it took a wild turn.
"I think we all started making dinner plans and then it came to a screeching halt," Buck said.
The Blue Jays appeared to be in good shape, tying it in the eighth when Buehrle walked Wells with the bases loaded and then taking the lead on Buck's drive in the ninth. But there was more drama to come.
Pierzynski drove Gregg's first pitch in the bottom half into the right-field seats.
Carlos Quentin then walked and was sacrificed to second before Kotsay -- who came into the game with a .137 average -- was intentionally walked. Alexei Ramirez forced him with a slow roller toward shortstop, putting runners on the corners, before Juan Pierre popped up a bunt attempt to the mound to end the inning.
The White Sox got a one-out single from Andruw Jones in the 10th, but he was doubled off on Rios' liner to short. They also got a dominant relief effort from Matt Thornton, who came on in the top half and struck out five of the six batters he faced over two innings.
Buck hit a two-run shot off Buehrle in the fifth before Kotsay hit one off Marcum in the bottom half, and Rios then gave Chicago a 3-2 lead with a solo shot in the sixth. That put Buehrle in position for his first win in about a month, but the walk to Wells with the bases loaded in the eighth spoiled his best start since the season opener, when he threw seven scoreless innings against Cleveland.
He allowed three runs and eight hits while tying his longest outing this season after dropping his previous four starts. Still, he's winless since April 11.
Singles by Travis Snider and Freddy Lewis and a one-out walk to Jose Bautista loaded the bases for Wells, who already had two hits. This time, he walked on a 3-1 pitch after White Sox manager Ozzie Guillen visited the mound, tying it at 3.
Marcum allowed six hits. He left with two outs in eighth after Omar Vizqel singled and Gonzalez booted Jones' grounder to short, putting runners on first and second. Shawn Camp came on and retired Rios on a popup to first to end the threat.
The White Sox kept 1B Paul Konerko out of the lineup for the second straight game because of a sore neck and held out struggling 2B Gordon Beckham. ... The Blue Jays held OF Adam Lind out of the lineup with the lefty Buehrle starting.