BOSTON -- Jackie Bradley Jr. never doubted he would pull out of his slump, even as he hit .167 in June and fell further down Boston's batting order.
He kept putting in the work. Kept tinkering with his stance and his swing. Kept believing he would snap out of it.
"You have to trust that what you're doing is going to produce results," Bradley said after his second straight three-hit game helped the Red Sox beat the Los Angeles Angels 9-1 on Tuesday night.
"If it doesn't early on, it's a long season," said Bradley, who batted ninth and drove in four runs. "You've just got to continue to grind. There's no other way."
Mookie Betts homered on John Lamb's first pitch of the game, and J.D. Martinez hit his major league-leading 24th home run to back David Price's six strong innings and lead the Red Sox to their fourth win in the last five games. The Angels lost their fourth straight game.
Christian Vazquez also hit one of Boston's four homers to help Price (9-5) bounce back from his previous loss on Wednesday in Minnesota that was his first since May 3. He allowed five hits on Tuesday, including a solo homer to Chris Young, and two walks while striking out seven.
Bradley has now had back-to-back multi-hit games after producing just five in his previous 68 games this season. He had three hits, all singles, against Seattle on Sunday but still entered the night hitting .189.
Boston Red Sox
Find the latest Boston Red Sox news, highlights, analysis and more with NBC Sports Boston.
"We all want the results now," Bradley said. "Sometimes the game's a lot tougher than that. You can do everything right and still be out."
Two-time AL MVP Mike Trout, who began the game batting .387 in June, singled in four at-bats for the Angels while serving as designated hitter to aid his recovery from a sprained right index finger. The Angels went hitless in their last three innings against Boston's bullpen and fell into fourth place in the AL West for the first time since opening day.
SAFE BETTS
Betts' homer into the Red Sox bullpen sent right fielder Michael Hermosillo crashing over the wall in pursuit. It was his 15h career leadoff homer, extending his franchise record.
"Trying to set the tone against a good team," Betts said. "Just letting them know we're here and we're ready to go."
SACRIFICIAL LAMB
Lamb (0-1) got just five outs. He allowed five runs, three earned, on six hits and a pair of walks.
He escaped more damage in the first after Betts' 20th homer of the season, then was removed in the second after giving up Bradley's two-run double and two more run-scoring hits.
"It was just a nice welcome to Fenway ballpark I guess by one of the better baseball players in the game right now," Lamb said. "I tried to get ahead on the outside part of the plate and they went ahead in the run column."
Deck McGuire needed just one pitch to end that inning, but he surrendered solo homers to Bradley in the third and Vazquez in the fifth before Martinez hit one in the sixth that made it 8-1.
IN A JAM
Price only had trouble in the third, when Young homered and then the Angels loaded the bases with two out on two singles, a wild pitch and a walk. He retired Albert Pujols on a grounder to third to end the inning.
"Pujols can tie the game at that point," Price said. "To get that ground ball is big."
TRAINER'S ROOM
Angels: McGuire was checked out by the team athletic trainer after Christian Vazquez lined a ball up the middle in the third inning, but he remained in the game.
Red Sox: Knuckleballer Steven Wright was put on the 10-day DL with left knee inflammation, and RHP reliever Justin Haley was recalled from Triple-A Pawtucket.
UP NEXT
Angels: LHP Andrew Heaney (4-5, 3.43 ERA) gets his first start since going seven innings and allowing one earned run on Friday against Toronto. Heaney has pitched at least seven innings in three of his last four starts.
Red Sox: RHP Rick Porcello (9-3, 3.44) has allowed two earned runs or less in four of his last five starts, holding the Twins to one hit over seven scoreless innings in his last turn on Thursday.