Ramon Santiago and Jhonny Peralta hit one-out singles off Victor Marte (0-1), who then grazed Austin Jackson's jersey with a pitch. Berry followed with a base hit up the middle through a drawn-in infield.
Joaquin Benoit (1-1) got the win. The Detroit bullpen shut out St. Louis after Jacob Turner allowed a run and four hits in five innings.
Kyle Lohse allowed a run and four hits in seven innings for the Cardinals.
Prince Fielder homered for the Tigers.
ATHLETICS 4, DODGERS 1
OAKLAND, Calif. (AP) — Yoenis Cespedes hit a three-run homer in the ninth inning for his first career game-ending shot as Oakland completed the sweep.
Cespedes connected with no outs off Josh Lindblom (2-1) for his seventh homer of the season. Oakland has won eight of nine after holding the NL's best team to eight total hits in the three-game series.
Starters Clayton Kershaw of the Dodgers and Travis Blackley each excelled. They both allowed one run and three hits in eight innings. Blackley walked none and struck out six while the NL Cy Young winner fanned seven and walked two.
Ryan Cook (2-1) relieved Blackley in the ninth.
NATIONALS 5, RAYS 2
WASHINGTON (AP ) — Suspended Tampa Bay reliever Joel Peralta served up a tiebreaking, two-run double to Danny Espinosa in the sixth inning that lifted Washington.
Earlier in the day, Peralta (0-3) learned that he had been penalized by Major League Baseball for eight games after being caught with pine tar in his glove Tuesday night. Peralta is appealing the decision and can keep playing until a final decision is reached.
Gio Gonzalez (9-3) pitched six innings on a steamy night when the gametime temperature was 97 degrees. Tyler Clippard pitched the ninth for his 11th save.
RED SOX 6, MARLINS 5
BOSTON (AP) — Daniel Nava singled in the go-ahead run to cap a three-run eighth inning and Boston completed the sweep.
Boston tied the score on a two-run homer by Will Middlebrooks, who drove in four runs, off Edward Mujica (0-3). Ryan Kalish then singled, raced to third on a groundout to first and scored on Nava's single up the middle.
Alfredo Aceves pitched a perfect ninth for his 18th save in 21 opportunities. Scott Atchison (2-0) allowed one hit over the seventh and eighth.
The Red Sox won their fifth straight game and the seventh in their last eight as they matched their season-best mark of three games over .500.
The Marlins dropped their fourth straight overall and 13th in their last 15.
Giancarlo Stanton, in a 2-for-31 slump, hit his first homer in 12 games and 15th of the season to give the Marlins a 4-3 lead in the sixth.
PIRATES 9, TWINS 1
PITTSBURGH (AP) — James McDonald pitched his first career complete game and Garrett Jones hit one of Pittsburgh's three home runs and the Pirates won for the fourth time in five games.
McDonald (6-3) allowed one run, six hits and no walks with five strikeouts, lowering his ERA to 2.19. He has allowed one run or fewer in nine of his 14 starts this season.
Jones had an RBI single in the first inning and a two-run homer that made it 8-1 in the seventh. Pedro Alvarez homered two batters later. Rod Barajas had a two-run homer in the sixth.
Justin Morneau had two hits for the Twins, who have lost six of eight.
Liam Hendriks (0-4) remained winless in 10 career starts. He was charged with six runs — three earned — and eight hits.
ROCKIES 4, PHILLIES 1
PHILADELPHIA (AP) — Chris Nelson hit a go-ahead, two-run homer in the seventh inning and Wilin Rosario added a two-run shot in the ninth to help Colorado snap a four-game losing streak.
Jeff Francis pitched five solid innings. Josh Roenicke (2-0) got the win and Rafael Betancourt worked the ninth for his 11th save in 14 chances.
Jimmy Rollins hit a leadoff home run for Philadelphia, which was looking for its first three-game sweep of the season.
Vance Worley (3-4) had allowed just three singles through 6 2-3 innings before Nelson's homer.