Castro hit his fifth homer of the year, while Contreras (3-7) allowed only two runs on five hits with a walk and eight strikeouts to earn his third win in five decisions.

Alexei Ramirez went 3-for-4 with an RBI and a run scored, and Jim Thome, Paul Konerko and Gordon Beckham each had a pair of hits in the White Sox's fifth straight win.

Shin-Soo Choo and Grady Sizemore each had an RBI, while Jamey Carroll and Victor Martinez scored a run apiece for the Indians, who have lost five in a row. Jeremy Sowers (2-6) yielded five runs on 11 hits with a walk and two strikeouts in six innings of work.

After 2 1/2 scoreless innings, the Indians jumped in front in the third. Carroll started the frame with a single to right and moved to third on Ben Francisco's double. After Asdrubal Cabrera struck out, Sizemore hit an RBI groundout to second.

Ramirez's RBI single in the fifth tied the game and the White Sox stormed ahead with four runs in the sixth.

Thome started the rally with a one-out single, and Konerko followed suit with another base hit. Castro followed by belting an outside pitch over the fence in right for a 4-1 Chicago lead. Jayson Nix made it four hits in a row with a double, and he scored on Beckham's RBI single for a four-run cushion.

"He gave me a good pitch to hit," said Castro. "The first two at-bats they threw first-pitch strikes. The third at-bat I was swinging all the way."

Cleveland cut its deficit to three in the home sixth on back-to-back two-out doubles from Martinez and Choo.

However, Chicago restored a four-run lead in the seventh on Konerko's two-out RBI hit.

Contreras lasted through the eighth without giving up another run, and Matt Thornton pitched a scoreless ninth to polish off the win.

"He was real good tonight," Indians manager Eric Wedge said of Contreras. "We need to do better offensively and I'm confident we will be."