AMERICAN LEAGUE: Red Sox 8, Blue Jays 3

Sandy Leon hit a home run and two doubles, Xander Bogaerts also homered and Rick Porcello took a three-hitter into the seventh inning, helping host Boston beat Toronto to match the second-best start in franchise history.

J.D. Martinez also had two of host Boston’s six doubles. The Red Sox (38-17) won for the eighth time in 10 games to maintain the best record in the major leagues and their best record through 55 games since 2002. Only the 1946 Boston team that started 42-13 with Ted Williams and Bobby Doerr returning from World War II had a better start.

Porcello (7-2) allowed three runs, two earned, and five hits in 6⅔ innings. Toronto loaded the bases against Hector Velazquez in the ninth, but Craig Kimbrel got the last two outs for his 17th save.

Marco Estrada (2-6) allowed four runs and seven hits in 3⅔ innings, dropping his fifth straight decision since April 26. Justin Smoak homered for Toronto, which has lost 12 of its last 16 games.

Boston led 5-1 after six, but Toronto cut the deficit in half in the seventh on a rally that started when Russell Martin was hit by a pitch with one out. Toronto loaded the bases before Porcello fanned Luke Maile for the second out.

Curtis Granderson hit a hard grounder past a diving first baseman Martinez, but second baseman Dustin Pedroia slid to field it in shallow right. He threw to Porcello covering first, but the ball went off his glove for an error and rolled off the fence in front of the Boston dugout, allowing Morales to score and make it 5-3.

Joe Kelly relieved Porcello and struck out Kevin Pillar on three pitches to end the inning.

Bogaerts homered in the seventh, and Leon hit a two-run shot in the eighth to make it 8-3.

Angels 9, Tigers 2

Ian Kinsler hit a three-run homer, Luis Valbuena went deep twice and Los Angeles beat host Detroit.

Nick Tropeano (3-3) made the most of Los Angeles’ offensive display, allowing two runs and seven hits in 5 ⅓ innings.

Kinsler connected in the second. Valbuena’s solo homer in the fourth gave the Angels a five-run lead, and his solo shot in the eighth restored their five-run cushion. Martin Maldonado added a two-run drive in the eighth.

Detroit right-hander Michael Fulmer (2-4) was tagged for five runs and six hits in 3 ⅓ innings with four walks. JaCoby Jones homered for the Tigers in the fifth, and Jeimer Candelario connected in the sixth.

Noe Ramirez, Jose Alvarez, Justin Anderson and Blake Parker combined for 3 ⅔ innings of scoreless relief for the Angels.

NATIONAL LEAGUE: Cubs 8, Pirates 6

Anthony Rizzo shook off the boos and sparked a late rally with his ninth home run of the season as Chicago held off reeling host Pittsburgh.

A day after his aggressive slide at home plate that took out Pittsburgh catcher Elias Diaz drew a rebuke from Major League Baseball, Rizzo doubled in the first inning and sent a solo shot off Edgar Santana (2-1) just over the railing of the Clemente Wall in right field to knot the game at 4.

The Cubs then piled on against Pittsburgh’s sagging bullpen to hand the Pirates their ninth loss in 11 games. Chicago scored five times against Pittsburgh relievers, including Ian Happ’s go-ahead double two batters after Rizzo tied it and Kyle Schwarber’s two-run homer off the right-field foul pole in the eighth.

Jon Lester (5-2) lacked his usual crispness, allowing four runs in six innings, but picked up the second multihit game of his 13-year career by going 2 for 3, including an RBI single in the sixth that drew the Cubs within a run. Jason Heyward went 3 for 5 with an RBI for Chicago.

Brandon Morrow gave up a two-run single to Starling Marte in the ninth but got two outs for his 12th save.

Cardinals 6, Brewers 1

Michael Wacha pitched two-hit ball for 6⅔ innings and St. Louis, boosted by three home runs, beat host Milwaukee.

Harrison Bader, Matt Carpenter and Francisco Pena homered to help St. Louis top the NL Central leaders.

Wacha (6-1), who entered the game with a 2.17 ERA in May, allowed just one run. He walked four and struck out three, and combined with two relievers to limit the Brewers to three hits.

The Cardinals took control by scoring four times in the second inning off Zach Davies (2-5). Bader led off with a home run, Carpenter walked with the bases loaded and Jedd Gyorko wound with a two-run single when his slowly hit grounder escaped the reach of second baseman Hernan Perez.

Zach Davies, making his second start since coming off the disabled list with a right rotator cuff injury, allowed five runs and eight hits over five innings.

INTERLEAGUE: Nationals 3, Orioles 2

Bryce Harper hit his NL-leading 17th home run, Mark Reynolds added a solo shot and Washington beat host Baltimore to extend its road winning streak to nine games.

Harper finished with three hits, Reynolds scored twice and 19-year-old rookie Juan Soto had his first three-hit game for Washington.

The Nationals’ nine-game run on the road matches their longest since moving from Montreal before the 2005 season.

Washington has won five straight overall and will seek to complete a three-game sweep of its neighboring interleague rival on Wednesday night.

Former Oriole Jeremy Hellickson (2-0) allowed two runs in five innings and Sean Doolittle worked the ninth for his 12th save in 13 tries.

Manny Machado homered for the Orioles, who have lost four in a row.

Coming off a 14-strikeout complete game against the White Sox, Baltimore’s Dylan Bundy (3-7) toiled through six innings, giving up three runs and 11 hits.

Harper put the Nationals in front with a solo shot in the first inning, and Machado answered with a bases-empty drive in the bottom half. Coincidentally, both players are expected to become high-priced free agents after this season.

Wilmer Difo singled in a run in the second and Reynolds’ sixth home run made it 3-1 in the fourth.

With two on and two outs in the Baltimore fifth, Adam Jones doubled to left-center. One run scored, but Jace Peterson was easily thrown out at the plate to end the uprising with Machado waiting on deck.