"Carrasco gave us a chance," Cleveland manager Manny Acta said. "He threw the ball well, and was aggressive with his fastball."
Duncan, who was pinch-hitting, and Cabrera both had two-run singles during the eighth to put Cleveland ahead 7-2. Duncan had a bases-loaded drive off J.P. Howell that hit high off the left-field wall, but he was held to a single because it looked like outfielder Sam Fuld might be able to catch the ball.
"Huge hit by Shelley Duncan. Huge hit by Orlando Cabrera, who always seems to be in the middle of those big rallies," Acta said.
Carrasco (4-2) gave up two runs and seven hits, helping the AL Central-leading Indians end a three-game losing streak. Cleveland had been outscored 23-4 during the short skid.
"I put in my mind I have to win this game and that's what I did," Carrasco said.
Slumping Rays All-Star third baseman Evan Longoria, moved from the middle of the lineup to leadoff, had two hits in four at-bats, including a homer. Manager Joe Maddon has taken that approach with struggling power hitters in the past and told Longoria to start having fun again.
Maddon said Longoria "analyzed the pitches better today" and did not rule out keeping him in the same leadoff role on Sunday.
Longoria drew a two-out walk off Rafael Perez to load the bases in the ninth. The Rays scored a run when first baseman Matt LaPorta was charged with an error after misplaying Johnny Damon's grounder, but closer Chris Perez got his 14th save when Sean Rodriguez was tagged out during a rundown between third and home on the play.
Perez said he was mad at himself for being slow covering first base and was heading toward the mound when he heard his teammates start yelling.
"I look up and there's guys running everywhere," Perez said. "I ran right at Rodriguez and he had to make a decision."
Longoria took most of the blame for the final out because he rounded second and was running toward third, where Rodriguez had stopped.
The Indians went up 2-0 during a strange first inning that saw just five hitters bat even though the first four all got hits.
Michael Brantley had a leadoff single and scored on a triple by Asdrubal Cabrera, who then was picked off third by James Shields (5-3). After Shin-Soo Choo and Travis Buck singled, Carlos Santana hit what turned out to be an inning-ending sacrifice fly. Choo crossed the plate on Santana's liner to right before Buck, who was running on the pitch, was doubled off first base.
LaPorta extended the Indians' advantage to 3-0 on a second-inning homer. He had struck out in all four at-bats in Friday night's 5-0 loss to the Rays.
Shields allowed three runs and seven hits over seven innings. The right-hander has gone seven or more innings -- including a 4-0 complete-game win over Florida last Sunday -- in nine consecutive starts.
Longoria cut the deficit to 3-1 on his third-inning solo shot. It was his first homer and RBI this season at home, coming in his 12th game.
Longoria, who had just six hits in 45 at-bats over his previous 12 games, also had a first-inning single.
"Joe's usually right," Longoria said of his manager.
Rodriguez's RBI bunt single in the fourth made it 3-2.
Tampa Bay's Matt Joyce, who entered hitting a major league-best .377, went 1 for 4. His average dropped three points.
Longoria is the first Rays player to homer in first at-bat leading off a game. ... Cleveland DH Grady Sizemore went 0 for 4 and is hitless in eight at-bats since returning Saturday from a bruised right kneecap. ... Tampa Bay CF B.J. Upton struck out in his first six plate appearances of the series, including twice Saturday, before grounding out in in the sixth.