CLEVELAND -- The Cleveland Indians ran the table on their homestand, completing the six-game run in dramatic fashion early Thursday morning at Progressive Field.

Asdrubal Cabrera's three-run home run with one out in the bottom of the 12th inning gave the Indians a 7-4 victory over the Boston Red Sox.

The start of the game was delayed by rain for 2 hours and 28 minutes Wednesday evening, and the game lasted 4 hours, 29 minutes. Cabrera's winning blast came at 2:02 a.m. EDT.

The Indians swept their six-game homestand against the Colorado Rockies and Boston.

After spending more than two weeks in last place in the American League Central, Cleveland is gaining ground rapidly on the first-place Detroit Tigers. Since May 18, the Indians have gone from 10 1/2 games behind Detroit to 3 1/2 games out. In that span, Cleveland is 11-5 while Detroit is 4-12.

With the score tied 4-4 in the bottom of the 12th, third baseman Mike Aviles reached on an infield single off right-hander Edward Mujica (2-2). Center fielder Michael Bourn singled to right field, moving Aviles to third.

Cabrera then hit a 0-1 pitch from Mujica, a former Indian, over the wall in right field for his fifth home run.

"It was a long day, but it was really good to get the win," the Cleveland shortstop said. "I was just trying to hit a fly ball and get the runner in from third. I know the pitches Mujica throws, so that helped."

Mujica said, "That pitch was a big mistake, and he hit it out. I left it over the plate."

Boston manager John Farrell added, "Anytime you go 12 innings, the losses sting a little bit. Cabrera just got hold of a breaking ball and put an end to this one."

The win went to right-hander Carlos Carrasco (1-3), who pitched two scoreless innings in his first appearance since May 26.

"It was almost unfair to bring him into a situation like that because he hadn't pitched in a while, but Carlos was outstanding," Cleveland manager Terry Francona said.

Trailing 1-0, the Red Sox took a 2-1 lead in the sixth inning on a big hit from Big Papi. Cleveland right-hander Corey Kluber hit the leadoff batter, third baseman Xander Bogaerts, with a pitch. One out later, Ortiz blasted a mammoth two-run home run into the seats in right-center field. The homer was hit an estimated 422 feet.

"Just a bad pitch," Kluber said.

"Corey got way too much of the plate with that one," Francona said.

Cleveland countered with three runs in the bottom of the sixth off right-hander Brandon Workman. Cabrera walked and went to third on a single by left fielder Michael Brantley.

Left-hander Chris Capuano relieved Workman, but Capuano, a left-hander, gave up hits to three consecutive left-handed hitters. Second baseman Jason Kipnis singled home Cabrera with the tying run.

First baseman Lonnie Chisenhall's bunt single loaded the bases, and right fielder David Murphy's single to right field scored Brantley and Kipnis, giving Cleveland a 4-2 lead.

Boston countered Cleveland's counter with a two-run rally off Kluber in the top of the seventh. Shortstop Stephen Drew walked to start the inning. Left fielder Daniel Nava singled, and center fielder Jackie Bradley Jr.'s sacrifice bunt moved the runners to second and third.

First baseman Brock Holt then hit Kluber's 100th and last pitch of the game into center field for a two-run, game-tying single.

The Indians struck first, scoring a run in the bottom of the first off Workman. With one out, Cabrera singled and stole second. Brantley stroked a single to left field, scoring Cabrera.

Workman gave up three runs in five-plus innings. Kluber allowed four runs in 6 1/3 innings.

NOTES: Indians RHP Zach McAllister (strained lower back) was scheduled to make a rehab start with Class A Lake County on Wednesday, but the game was rained out. Manager Terry Francona said McAllister would make two rehab starts before being activated. ... Cleveland Browns QB Johnny Manziel was scheduled to throw out the first pitch before Wednesday's game, but the ceremony was scrapped due to rain. ... Tuesday marked the first time since May 29 that Boston did not make a roster move. The Red Sox made 11 roster moves in 13 days between May 21 and June 2.