Carmona pitched three-hit ball over eight innings, retiring his final 16 batters and leading the Indians over the Kansas City Royals 6-0 Saturday night.
Travis Hafner homered for Cleveland, which cut its magic number to nine for clinching the division. The Indians, who have won 17 of their last 21 games, remained 5½ games ahead of second-place Detroit.
Carmona (17-8) struck out nine and walked none, winning his third straight start. Rafael Perez finished with a perfect ninth, striking out the side.
"I was in a groove and feeling good," Carmona said through interpreter Luis Rivera, Cleveland's first-base coach. "I had command of all my pitches."
The 23-year-old right-hander took over the AL lead with a 3.07 ERA.
"I'm not thinking about that," he said. "I'm only thinking about my next start and giving my team a chance to win the game."
Indians manager Eric Wedge would have left Carmona to in go for the complete game if the Indians hadn't scored four runs in the eighth inning.
"It's fun to watch him go out there and keep getting better and learning," he said. "He's done a great job."
Carmona combined with C.C. Sabathia (17-7) to give the Indians two pitchers with 17 or more wins in a season for the first time since Bartolo Colon (18) and Charles Nagy (17) in 1999. Carmona is 6-4 with a 2.19 ERA in 13 starts since the All-Star break.
Cleveland first baseman Ryan Garko left the game in the bottom of the eighth when he was hit on the middle finger of the right hand by a throw from shortstop Jason Smith. Garko said after the game the finger felt better and he hoped to play Sunday.
Kansas City, which lost for the ninth time in 10 games, advanced one runner to third base.
Zack Grienke (6-6) allowed two runs -- one earned -- and four hits in 5 1/3 innings. He also was impressed with Carmona.
"He was amazing today," Grienke said. "Just watching him pitch, he would have shut anybody down. The stuff he had was really impressive. There's not much you can do about it."
Cleveland went ahead in the first after first baseman Billy Butler fielded Grady Sizemore's grounder but made an errant underhand toss that pulled Grienke off the bag for an error. Sizemore scored on Asdrubal Cabrera's double.
Hafner's 22nd homer made it 2-0 in the third. Garko, who walked, was thrown out at the plate by second baseman Mark Grudzielanek's relay from right fielder Mark Teahen when he tried to score on Johnny Peralta's double.
Cleveland padded the lead in the eighth, helped by two errors. Smith's bad throw on Garko's single allowed Victor Martinez to score from second, and Teahen dropped Franklin Gutierrez's sacrifice fly to right as pinch-runner Josh Barfield came home. Casey Blake added a two-run single off Ryan Braun.
Martinez had an eighth-inning double, which extended his hitting streak to 10 games. He's also hit safely in 20 of his last 22 games.
- Cabrera has hits in 12 of his last 13 games and the Indians are 16-3 when he bats second.
- The Indians are 22-8 since Aug. 15.
- Royals DH Mike Sweeney (strained right groin) wasn't in the lineup Saturday night. He was injured running the bases Friday.
- Jason LaRue was 0-for-3, dropping his season average to .143.