The Cardinals are 6-0 against the Marlins this season, having allowed just six runs.
Cardinals starting pitcher Johan Oviedo threw seven scoreless innings while yielding six hits, striking out four and walking none. Ryan Helsley (4-4) got the last four outs to earn the victory.
Sandy Alcantara (4-6) went the distance for the Marlins, who have lost 11 of their past 12 road games. Alcantara struck out seven batters, walked one and allowed six hits and an unearned run in 8 1/3 innings.
Tigers 6, Royals 5
Willi Castro’s two-run home run keyed a three-run seventh inning and visiting Detroit defeated Kansas City to complete a three-game sweep. The Royals took their straight loss and their 11th defeat in 12 games.
Tarik Skubal (4-7) picked up the win after allowing three runs on six hits in six innings. He struck out seven and walked two. Michael Fulmer gave up two runs in the ninth before finishing off his fifth save.
Royals starter Brady Singer was removed after just three innings with right posterior shoulder tightness. He allowed one run on four hits. Adalberto Mondesi and Salvador Perez homered for Kansas City.
Reds 2, Brewers 1
Tyler Mahle matched a career high with 12 strikeouts and Tucker Barnhart drove in a go-ahead run with a seventh-inning double as Cincinnati edged Milwaukee to complete a three-game sweep.
Mahle (7-2) yielded a run on three hits and two walks in six innings. Lucas Sims got four outs to record his seventh save as the Reds won their sixth straight overall and their eighth in a row on the road.
Brewers starter Freddy Peralta (6-2) gave up two runs on five hits and no walks with six strikeouts. Milwaukee was swept at home by Cincinnati for the first time since August 2009.
White Sox 8, Rays 7 (10 innings)
Yasmani Grandal delivered a walk-off single as Chicago stopped visiting Tampa Bay in the rubber match of the three-game series.
The matchup of the teams with the two best records in the American League lived up to expectations. Chicago led 7-2 after five innings before Tampa Bay chipped away and tied the game with two runs in the eighth.
Andrew Vaughn began the 10th inning as the automatic runner at second, moved to third on Jose Abreu’s groundout and scored on Grandal’s single to right field off Pete Fairbanks (1-1).
Nationals 3, Pirates 1
Josh Bell hit a two-run homer against his former team and Washington sent visiting Pittsburgh to its 10th straight loss.
Yan Gomes homered for the second straight game for the Nationals, who have won four straight and six of eight.
Paolo Espino (1-2) pitched five scoreless innings for his first major league win. The 34-year-old journeyman made the start in place of Max Scherzer, who went on the 10-day injured list Tuesday due to groin inflammation.
Athletics 8, Angels 4
Ramon Laureano returned from a 17-game absence caused by a hip injury and homered for Oakland, which completed a sweep of visiting Los Angeles.
Matt Olson had three hits, Chad Pinder had two hits after entering the game as a pinch hitter in a six-run sixth inning and Mark Canha drove in two runs for the Athletics, who won their sixth straight.
Shohei Ohtani homered into the upper deck in right for the second straight game, giving him 19 on the season for the Angels.
Rockies 8, Padres 7
Charlie Blackmon had a pinch-hit single in the bottom of the ninth to drive in Trevor Story, and Colorado beat San Diego to sweep a three-game series in Denver.
Story had two doubles and two stolen bases, Elias Diaz and C.J. Cron homered and Raimel Tapia had three hits to extend his hitting streak to 13 games for Colorado.
Fernando Tatis, Trent Grisham and Jake Cronenworth hit home runs for the Padres, who have dropped seven of their past eight games.
–Field Level Media