CLEVELAND (AP) -- Yan Gomes made sure the Indians went into the All-Star break on a positive note.
Gomes drove in all three runs, including a go-ahead two-run homer in the eighth inning, and Cleveland rallied for a 3-2 win over the Chicago White Sox on Sunday.
Gomes' blast to right off Javy Guerra (0-2) came after the White Sox scored two runs in top of the inning to take a 2-1 lead.
Nick Swisher led off with a single before Gomes, who also had an RBI single in the second, hit a 1-1 pitch into Chicago's bullpen.
Gomes, who threw his arms in the air as he rounded first base after his 12th homer of the season, wasn't trying to do anything dramatic.
"I was just trying to do the same thing Swish did, and just get a hit," he said. "I definitely wasn't thinking about doing hitting a home run."
"I'm thrilled for him, because he was a little under the weather today, but he didn't want to come out of the game," Indians manager Terry Francona said.
Guerra admitted he didn't make a good pitch.
"A slider, came out, wasn't a very good one," he said. "(Gomes) did what he was supposed to. Broken-bat base hit to left, next guy hits a homer. It's just bad luck. Bad inning."
Bryan Shaw (4-1) allowed two runs in the top of the eighth. Cody Allen pitched the ninth for his 12th save, striking out the final two hitters.
Trevor Bauer struck out a career-high 10 in 6 2-3 scoreless innings for Cleveland.
Gordon Beckham's RBI single tied the game before Leury Garcia's hit to center put Chicago ahead, but the White Sox couldn't hold the lead for their fourth loss in five games.
The Indians head into the All-Star break with a 47-47 record.
"I wish our record was better, but in the next two months, if we play good baseball it's going to be very exciting," Francona said. "It's in front of us now and if we can play well, we can climb back into it and play relevant games at the end."
John Danks allowed one run in seven innings.
The White Sox threatened throughout the game, but didn't score until the eighth. Conor Gillaspie singled with one out, took second on a wild pitch and scored on Beckham's single up the middle.
After a groundout, Garcia sent a roller to the right side. Second baseman Jason Kipnis tried to make a backhand stop near the bag, but the ball went under his glove and rolled into center field.
Bauer allowed eight hits and had at least one base runner in every inning, but pitched out of trouble each time. The right-hander was pulled after All-Star Jose Abreu's two-out single in the seventh, but Marc Rzepczynski retired Adam Dunn.
White Sox All-Star shortstop Alexei Ramirez was out due to a stiff back, but is expected to play in Tuesday's All-Star game in Minneapolis.
The loss sent Chicago into the break with a 45-51 record.
"We've had spurts where we play well, we've had spurts where we didn't play that well, but we've had a lot of games that we could have won that we didn't win," White Sox manager Robin Ventura said. "You wish you were in a better spot, but you come back and try and clean that stuff up."
Bauer's first career outing against Chicago last season didn't work out well. He allowed five runs while recording only two outs, but the Indians rallied for a 19-10 victory.
Bauer more than made up for that Sunday. His biggest jam came in the sixth. Dayan Viciedo singled and Gillaspie walked to start the inning, but Gordon Beckham struck out. Gomes quickly fielded Tyler Flowers' tapper in front of the plate and his throw to third forced Vicideo. Bauer ended the inning by striking out Garcia.
Chicago had three hits in the second, but didn't score. Gillaspie led off with a single, but was doubled off first when Mike Aviles made a strong throw from left field after catching Beckham's foul fly ball.
Garcia followed with a single, but Alejandro De Aza flied out.
Abreu, who made the All-Star team in his rookie season, was 3 for 5. He goes into the break with a major league-leading 29 homers and is hitting .292.