Keon Broxton highlighted a group of five Milwaukee batters to finish with two hits. He also scored two runs, including a key insurance run in the sixth.
"Our offense has been clicking all year," said Broxton, who has reached base in 10 straight games and is batting .385 in his last 16. "So we're just continuing what we started. It's beautiful and it's a lot of fun, like every guy in that lineup is going to give a tough at-bat, and come up with some good results, so it's a lot of fun watching all these guys play good and play hard."
Most of Milwaukee's success came against Boston right-hander Kyle Kendrick, who struggled in his second start of the season and was charged with six runs and 10 hits in 4 1/3 innings.
"Obviously, the results weren't good," said Kendrick, who was optioned to Triple-A Pawtucket after the game. He fell to 0-2 with a 12.96 ERA. "They got a couple of hits there in the first and those doubles in the fifth kind of got me. It is a game. Sometimes it goes your way and sometimes it doesn't. You try to make pitches and I gave it my all out there. Sometimes it doesn't work out. You move on."
Boston's offense made right-hander Chase Anderson work, tagging him for nine hits and a walk in 4 2/3 innings but could only score two against him and finished the game 2-for-16 with nine stranded.
"I thought our guys did a great job once again of putting men on base," Red Sox manager John Farrell said. "But we come up short with three double plays here tonight."
Back-to-back RBI singles from Domingo Santana and Hernan Perez gave Anderson a 2-0 lead in the first inning, but Bradley led off the second with a home run and Mookie Betts drove in Christian Vazquez with a single in the fourth to tie the score at 2.
"That's a good lineup," said Anderson, who struck out four. "They don't swing at pitches out of the strike zone. I definitely had to work hard."
Rob Scahill (1-1) took over for Anderson with two on and two outs in the fifth. Eric Thames put Milwaukee back in front in the bottom of the inning with a ground-rule double to score Broxton.
Ryan Braun moved Thames to third with a base hit but gave way to pinch-runner Jonathan Villar because of tightness in his left calf. That left runners at the corners with nobody out for Travis Shaw, who chopped into a force at second that drove in Thames.
Santana kept the inning going with a single to left center that chased Kendrick, but Heath Hembree couldn't stop the bleeding, either.
Shaw stole third and scored on a throwing error by Vazquez. The error also moved Santana to third, and he came home when Perez singled to right before Hembree got out of the inning.
Milwaukee added an insurance run in the sixth when Vazquez made a bad throw trying to prevent Thames from stealing second, allowing Broxton to score.
Boston plated a run in the eighth and ninth but couldn't close the gap.
"Once again, two consecutive nights where a big inning haunted us," Farrell said. "We find a way to get back into it, create a number of opportunities."
Red Sox shortstop Xander Bogaerts extended his hitting streak to 13 games, going 2-for-4.
NOTES: With the demotion of RHP Kyle Kendrick postgame, the Red Sox recalled LHP Robbie Ross Jr. from Triple-A Pawtucket. ... Boston LHP David Price will see his first game action of the season Sunday when he makes a rehab start for Pawtucket. Price has been sidelined since suffering an elbow strain on Feb. 28. ... Brewers 2B Jonathan Villar got a day off, but manager Craig Counsell was quick to point out that it was not a benching despite Villar making two base-running blunders a night earlier. CF Keon Broxton slid into Villar's usual spot atop Milwaukee's order. ... Milwaukee RHP Junior Guerra will head off on a rehab assignment this weekend after a successful simulated game Wednesday at Miller Park. He strained his right calf running to first base three innings into his Opening Day start. ... Boston 1B Hanley Ramirez left the game with a strained right trapezius muscle and will be re-evaluated Thursday.