"It was a weird game, but that's baseball," Westbrook said. "I was getting ground balls, they just happened to find the holes here and there. I still think like they felt I was in control of the game."
Westbrook hung on while giving up the most hits in the majors this season, permitting six runs in eight innings. The Red Sox got 12 singles, three doubles and a walk against him, but grounded into two double plays and left eight runners on base.
"Hey, he got the win," Indians manager Eric Wedge said. "We'll take it."
John Dopson was the last pitcher to win while permitting 15 hits when he led Montreal past Atlanta 9-2 on July 3, 1988, the Elias Sports Bureau said.
The Red Sox fell one game behind first-place New York in the AL East.
Westbrook (8-7) ended his three-game losing streak and won for the first time since July 4.
Jason Davis recorded his first career save, retiring David Ortiz, Manny Ramirez and Doug Mirabelli in order. Cleveland led entering the ninth inning in each game of the series, but allowed Ortiz's winning homer Monday and Mark Loretta's game-ending double Wednesday.
A strong wind kept hard-hit balls by Ortiz and Ramirez in the park in the ninth inning, preventing another Red Sox comeback. Boston is tied with Minnesota with a major league-best 32 come-from-behind win.
"You saw a lot of balls die out there tonight," Wedge said. "The wind was cutting in pretty good."
Beckett (13-6) allowed seven runs and 11 hits in six innings. He fell to 0-2 this season against the Indians, who tagged him for nine runs in 3 2/3 innings on April 27.
Boston scored a run in the first inning and two more in the second. Beckett breezed through five innings, allowing only Boone's solo homer, but gave up six runs on seven consecutive hits in the sixth.
"I didn't execute pitches," Beckett said. "That loss is on me, it's not on anybody else."
Joe Inglett started the rally with a single and Hafner followed with his 31st home run. After three consecutive singles, Choo drove a first-pitch fastball to center field to give the Indians a 7-3 lead.
"Well, he gave up six runs and it happened in a hurry," Boston manager Terry Francona said. "He just left a fastball right over the middle of the plate to Choo. If he was on our team, you'd say it was a gorgeous swing, but since he's on Cleveland, it didn't look so good."
Boston scored two more in the sixth and another in the eighth to pull within 7-6.
Kevin Youkilis had three hits and three RBI for the Red Sox. Ramirez drove in Youkilis in the first inning to become the 45th player in major league history with 1,500 RBI.
Ortiz has gone 0-for-8 since hitting the game-winner Monday.
- Boston 3B Mike Lowell left the game in the eighth inning after fouling a ball off his foot. Francona said he will be examined Friday.
- Boston C Jason Varitek had arthroscopic surgery on his left knee and was expected to begin rehabilitation immediately, though there was no timetable given for his return.
- Boston RHP Keith Foulke struck out two and walked one in a scoreless inning in a rehab start for Triple-A Pawtucket. Foulke was 2-1 with a 5.63 ERA in 29 relief appearances before going on the DL on June 13 with elbow tendinitis.
- Beckett has given up a major league-high 31 home runs.
- Ramirez extended his hitting streak to 19 games.
- Hafner is two home runs shy of tying his career high.