Jason Kipnis and Michael Brantley each singled in a run for the Indians, who have won four of five and 11 of 16 overall to remain in the hunt for an AL wild card.
Alexei Ramirez had two hits for the White Sox, and John Danks (9-9) pitched six solid innings.
Carrasco (6-4) improved to 3-0 with a sparkling 0.73 ERA in four starts since he returned to the rotation. The right-hander also began the year as a starter, but then lost three of his first four outings.
He struck out seven in 6 2-3 innings while holding the White Sox to one run and four hits.
Cleveland grabbed the lead for good in the sixth. Jose Ramirez led off with a single and stole second. He then advanced to third on a groundout and scored on Kipnis' base hit, giving the Indians a 2-1 advantage.
Brantley added an RBI single in the seventh.
Danks allowed two runs and five hits while falling to 0-3 with a 6.75 ERA in five August starts.
Chicago closed to 3-2 on Adam Dunn's RBI single in the eighth against Cody Allen, who struck out the next four batters for his 18th save in 19 attempts.
Carrasco retired 12 consecutive batters before Tyler Flowers singled with two outs in the seventh. He improved to 1-4 with a 6.00 ERA in eight career games against the White Sox.
White Sox rookie Jose Abreu hit a run-scoring single in the third, tying it at 1. It ran his total for the season to 97 RBIs, tied with Miami's Giancarlo Stanton for the major league lead.
Cleveland jumped in front when Bourn tripled on the first pitch of the game and scored on Jose Ramirez's grounder.
The Indians threatened to take a 3-0 lead in the second, but Alejandro De Aza made a leaping catch above the left-field fence to rob Zach Walters of a two-run homer.
C Yan Gomes is on pace to return from the seven-day concussion list before the series opener in Kansas City on Friday. As a precautionary measure, Gomes will take part in the pregame workout before the roster move is completed. ... 1B Nick Swisher is expected to spend most if not all of September in Los Angeles, where he is recuperating from recent surgeries on both knees.
RHP Danny Salazar (4-6, 4.52 ERA) will take the mound against Royals LHP Jason Vargas (10-6, 3.17 ERA) in the opener of the three-game set on Friday