"A great victory, man ... it's great to see the offense respond that way," outfielder Nelson Cruz said.
Hamilton also had three hits: a two-run triple in the first, a two-run home run in the fifth and a single that moved Andrus to third with nobody out in the ninth. Hamilton, who has a six-game hitting streak, is batting .326 with two home runs and 12 RBIs in his last 10 games.
"I've felt good for the last couple of weeks, but I have been getting balls to fall in," Hamilton said. "Today, I felt good ... taking pitches, working counts. It was a good day, a fun game. A little stressful, but fun."
It probably wasn't that fun for Harrison. Manager Ron Washington said after the game that Harrison was dealing with a virus picked up over the weekend in Kansas City. The result was Harrison's shortest outing since May 2 in Toronto. Harrison, who was getting IV fluids during the game, lasted just 4 2/3 innings and allowed five runs on eight hits, three walks and three strikeouts.
"He's under the weather a little bit, but he still went out there and left it all on the mound," Washington said about Harrison. "He gave us everything he had. He took the ball and battled."
Red Sox starter Josh Beckett also had a rough afternoon, giving up eight runs in five-plus innings. Hamilton, Mitch Moreland and Geovany Soto all hit home runs off Beckett, while Cruz went deep off Mortensen.
"I felt good out there today," Beckett said. "I just left some balls up. They took advantage of them. The ball that Hamilton hit, if it's down a little bit more, it's probably not a home run. He did a good job of getting to it, but it was still up. The ball Soto hit, it was up and in the middle of the plate. You can't pitch there against these guys. These guys are good."
Cruz's home run in the top of the seventh inning gave the Rangers a 9-5 lead. But the Red Sox came back with four runs in the bottom of the inning against Roy Oswalt, who took over for Harrison with two out in the fifth.
Oswalt had retired four straight hitters, including three strikeouts, before going back out in the seventh. But Dustin Pedroia led off with a single and scored on Adrian Gonzalez's double into the right-field corner. Ross then drew a walk, and Will Middlebrooks tied it up with a three-run home run to left.
"I thought Roy was sharp, so I decided to stay with him," Washington said. "It didn't work out. It almost cost us, but the other guys picked us up."
Alexi Ogando did. He took over and retired six straight hitters, putting himself in position to get the victory when the Rangers went ahead in the ninth.
"A lot of offense today, that's the nature of this ballpark sometimes," designated hitter Michael Young said. "Our pitchers battled, but [the Red Sox] had some good at-bats, too. It was just one of those games where you can't stop putting up runs."
Joe Nathan closed it out for his 23rd save of the season. He has also been successful on his past 21 save opportunities, tying the Rangers' single-season record set by Francisco Cordero in 2004. Nathan did so despite giving up a one-out double to Ross, putting the tying run in scoring position. But he struck out Middlebrooks and Ryan Lavarnway to end the game.
The Rangers won six of eight from the Red Sox this season and are 16-8 against the American League East this season.
"Both teams were fighting and didn't give up," Washington said. "We were fortunate we were able to get the last blow in."