Pittsburgh Pirates' Corey Dickerson, left, its his hand on the bag before Philadelphia Phillies second baseman Jesmuel Valentin can make the tag to lead off the ninth inning of a baseball game with double in Pittsburgh, Saturday, July 7, 2018. Dickerson was stranded at second and the Phillies won 3-2. (AP Photo/Gene J. Puskar)
Pittsburgh Pirates' Corey Dickerson, left, its his hand on the bag before Philadelphia Phillies second baseman Jesmuel Valentin can make the tag to lead off the ninth inning of a baseball game with double in Pittsburgh, Saturday, July 7, 2018. Dickerson was stranded at second and the Phillies won 3-2. (AP Photo/Gene J. Puskar) Credit: ap — Gene J. Puskar

Kansas City, Mo. — Andrew Benintendi homered, doubled, walked a career-high four times and scored four runs, and the Boston Red Sox routed the Kansas City Royals, 15-4, on Saturday night.

Mookie Betts had four hits, raising his American League-leading average to .343. Ten Red Sox players had RBIs as they scored a season high in runs. They scored 11 runs after the sixth inning.

Benintendi became the first Boston player to walk four times and homer in a game since David Ortiz in 2007. He also drove in two runs.

Xander Bogaerts had three RBIs for the Red Sox, who have won five straight and 12 of their past 15.

Christian Vazquez had a two-run, two-out single in the seventh.

Royals pitchers walked 13, one shy of the franchise record, including three in the three-run seventh. Mitch Moreland’s sacrifice fly scored Benintendi, who led off the inning with his fourth walk, for the first run of the inning.

The Red Sox rallied from a three-run deficit to take the lead with a four-run fifth, which Bogaerts highlighted with a three-run double.

Royals rookie starter Brad Keller walked five, including Benintendi and Moreland in the fifth to load the bases before Bogaerts’ double. J.D. Martinez singled in the initial run of the inning, hiking his major league-leading RBI total to 74.

David Price, however, could not hold the lead. Price, who had never hit three batters in a game, hit three Royals in a four-batter span, including Lucas Duda with the bases loaded to bring home Whit Merrifield in the fifth to tie the score at 4.

Price was lifted after 4⅔ innings, allowing four runs on six hits with nine strikeouts.

Heath Hembree (4-1) worked 1⅓ hitless innings to pick up the victory. Jason Adam (0-2), the third of seven KC pitchers, took the loss. Catcher Drew Butera got the final out in his sixth career relief appearance and his first since 2016.

Twins 5, Orioles 4

Minneapolis — Kyle Gibson recovered from a rough start to throw seven innings, and Max Kepler homered in his second straight game to lead Minnesota past Baltimore, 5-4, on Saturday.

Bobby Wilson went 2-for-3 with three RBIs for the Twins, who won their third in a row.

Gibson (3-6) allowed three runs in the first inning — including a two-run homer by Chris Davis — but only gave up two hits after that while striking out nine.

It was Gibson’s highest strikeout total since fanning 10 batters on April 26 against the New York Yankees.

Cubs 8, Reds 7

Chicago — Javier Baez homered and had four hits — including a game-tying infield single in the eighth — and Chicago rallied from a five-run deficit and over Cincinnati.

Anthony Rizzo’s RBI groundout capped a four-run eighth inning for Chicago, which has come from behind in each of its last eight wins.

Eugenio Suarez homered and Billy Hamilton added three hits and three stolen bases for Cincinnati, which had its five-game winning streak against the Cubs snapped.

Randy Rosario (4-0) allowed two hits in 2⅓ innings to get the win. Brandon Marrow worked the ninth for his 20th save.

Phillies 3, Pirates 2

Pittsburgh — Nick Williams, Scott Kingery and Jorge Alfaro drove in runs on consecutive at-bats in the seventh inning to help Philadelphia beat Pittsburgh and extend the first-place Phillies’ winning streak to six games.

Jake Arrieta (6-6) worked around six hits with the help of eight strikeouts to hold the Pirates to two runs over seven innings.

Pirates starter Jameson Taillon (5-7) was charged with all three runs. He had allowed just two singles coming into the seventh. He struck out eight and walked none.

Cardinals 3, Giants 2

San Francisco — Carlos Martinez pitched seven effective innings for his third consecutive win and St. Louis beat San Francisco.

Martinez (6-4) allowed one run on six hits with three strikeouts and did not walk a batter for the third time this season. The right-hander also drove in the Cardinals’ first run with an RBI double in the third.

Jordan Hicks allowed a run in the eighth and Bud Norris retired three batters for his 17th save.

Braves 5, Brewers 1

Milwaukee — Anibal Sanchez pitched effectively into the seventh and Freddie Freeman added three hits, lifting slumping Atlanta over Milwaukee.

Sanchez (4-2) retired 19 in a row at one point to help snap Atlanta’s season high four-game skid. He exited with two outs in the seventh after being hit by a liner on his right hip.

Atlanta got to Brewers spot starter Aaron Wilkerson (0-1) early to end Milwaukee’s five-game winning streak. Wilkerson had taken the rotation turn of Brent Suter, who went on the 10-day disabled list with left forearm tightness on Friday.

Tigers 7, Rangers 2

Detroit — Nicholas Castellanos homered as part of a seven-run first inning for Detroit, and the Tigers cruised past Texas.

Cole Hamels (4-8) retired only two batters for the Rangers in his shortest start since 2010, and Adrian Beltre had a home run taken away when Detroit’s JaCoby Jones made a spectacular catch in left-center field.

Mike Fiers (6-5) allowed a run and five hits in six innings. He struck out six with one walk.

Yankees 8, Blue Jays 5

Toronto — Luis Severino pitched five innings to earn his major league-leading 14th win, Brett Gardner and Aaron Judge each hit solo home runs, and New York beat Toronto.

Severino (14-2) won his fifth straight start, allowing three runs and five hits. Two of the hits were home runs, marking the first time this season that Severino has allowed more than one homer in a game. He has allowed three earned runs or less in 16 consecutive starts.

Jonathan Holder, David Robertson, Dellin Betances each worked one inning and Aroldis Chapman got the first out of the ninth before leaving with an apparent injury. Chasen Shreve finished for New York, giving up a solo homer to Aledmys Diaz.

Rays 3, Mets 0

New York — Blake Snell blanked the Mets over a career-high-tying 7⅓ innings, Wilson Ramos drove in a pair of runs and Tampa Bay downed New York.

Snell (12-4) struck out nine, scattering six hits and three walks while lowering his ERA to 2.09. The lanky lefty has yielded two runs or fewer in nine of his last 10 starts and is 4-0 with an 0.63 ERA over his last four outings, two against the Astros.

Steven Matz (4-6) continued his recent surge, charged with one run on five hits and three walks in 6⅓ innings — striking out five. The Long Island native has allowed four earned runs across his last his three starts, a span of 18⅔ innings.

Sergio Romo pitched a scoreless ninth for his ninth save in 13 chances.

Rockies 5, Mariners 1

Seattle — Noel Cuevas hit a three-run homer in the seventh inning among his three hits to lead Colorado to a win against Seattle.

Carlos Gonzalez added a double and a run-scoring single for the Rockies, who have won five in a row.

Jean Segura homered for the Mariners, who came into the series having won nine of their last 10, but have now lost two in a row.

Seattle starter James Paxton (8-3) lost for the second time in three starts, allowing four runs and seven hits in seven innings. It was the third time in four starts Paxton allowed at least that many runs and hits.

Astros 12, White Sox 6

Houston — Yuli Gurriel and Alex Bregman each homered and Charlie Morton won his 11th as Houston beat Chicago for its fifth straight win.

Morton (11-2) allowed five runs and five hits with eight strikeouts in 5⅔ innings. The right-hander has won four of his last five starts.

James Shields (3-10) allowed a season high-tying eight runs on a season-high 10 hits with nine strikeouts in 5⅔ innings for the White Sox, who have lost four straight. Shields had allowed one run over his prior two starts.

Atletics 6, Indians 3 (11)

Cleveland — Stephen Piscotty hit a go-ahead, two-run homer in the 11th inning and Oakland Athletics past Cleveland.

Matt Chapman, who had a career-high four hits, scored later in the frame on Jonathan Lucroy’s grounder to complete the A’s comeback victory and make a winner out of closer Blake Treinen (5-1).

Oakland won for the ninth time in 11 games since June 25 and snapped the Indians’ home winning streak at eight. Josh Tomlin (0-5), who was Cleveland’s sixth pitcher, allowed all three runs in the 11th.

Nationals 18, Marlins 4

Washington — Mark Reynolds homered twice and drove in a career-high 10 runs, Max Scherzer won for the first time since June 5, and Washington beat Miami.

Washington has won three straight and scored a combined 35 runs since calling a players-only meeting on Wednesday after falling under .500 for the first time since May 2.

Reynolds (5-for-5) tied his career high for hits and equaled the Nationals’ RBI record.

Dodgers 3, Angels 1

Anaheim, Calif. — Ross Stripling pitched another gem and Justin Turner drove in two runs to lead the Los Angeles Dodgers over the Angels.

Stripling (7-2) is making a strong case to make the AL All-Star team with another terrific outing. He allowed just one run and three hits — all by Mike Trout — in six innings. The right-hander struck out seven and walked none, and lowered his ERA to 2.14.

After blowing a save opportunity on Friday night, Kenley Jansen pitched a perfect ninth to earn his 24th save.