Jose Contreras (5-7) got his first win since May 21, allowing eight hits and five runs in 6 2-3 innings. White Sox right fielder Jermaine Dye made two diving, outstretched catches in right field but had to leave the game as a precautionary measure in the fourth inning with a strained right quadriceps.
Chicago, with only five wins in 22 games, had 13 hits.
The Marlins, losers of seven of nine, had back-to-back errors in the fourth before Thome connected.
After Josh Fields led off with a single, right fielder Jeremy Hermida missed Juan Uribe's liner for an error
-- it went off the top of his glove -- and then Marlins starter Josh Johnson picked up Jerry Owens' comebacker and threw low to first for another error.
One out later, Thome followed with his ninth homer of the season and 53rd in interleague play.
Alfredo Amezaga hit a two-out RBI triple in the fifth to cut the lead to five, and Florida loaded the bases in the sixth on two walks and a throwing error by Contreras before he retired the side by striking out Miguel Olivo and getting Aaron Boone on a fly ball.
Florida got two more in the seventh and drove out Contreras on a run-scoring grounder by Hanley Ramirez and RBI single by Miguel Cabrera that made it 9-5.
Uribe's seventh-inning RBI single pushed the lead back to five.