MIAMI — Unbeaten ace Dallas Keuchel became the first seven-game winner in the majors despite pitching only five innings, his shortest outing this season, and the Houston Astros beat the swooning Miami Marlins 12-2 on Tuesday night.

Jake Marisnick tripled his season RBI total to six with a pair of two-run homers against his former team, both caroming off the home-run sculpture at Marlins Park. Brian McCann also had four RBI.

Keuchel (7-0) allowed two runs, both in the first inning, and threw 70 pitches before departing with a 10-2 lead. His ERA rose to 1.84.

The Astros (28-12) own the best record in the majors and have won 13 of 16. The last-place Marlins (14-24) are headed the other way, losing 16 of 20. They’re 1-7 on their homestand going into Wednesday’s finale.

RANGERS 5, PHILLIES 1: Yu Darvish struck out nine over seven solid innings and host Texas stretched the majors’ longest active winning streak to seven games.

Nomar Mazara had a solo homer in the first, and Mike Napoli hit a two-run shot in the eighth. Napoli, who came in hitting .165, went 3 for 3.

Darvish (4-2) allowed four hits and two walks. He preserved a two-run lead by striking out Brock Stassi with runners at first and second after he allowed his only run on an RBI single by Freddy Galvis in the seventh inning.

Closer Matt Bush struck out one in a perfect ninth after Napoli’s homer eliminated a save situation.

Phillies starter Jared Eickhoff (0-4) struck out eight and allowed seven hits in his first career start against the franchise that drafted him in 2011.

BRAVES 9, BLUE JAYS 5: Dansby Swanson hit a tie-breaking homer in the seventh inning, Freddie Freeman also had a two-run shot and Atlanta won at Toronto to sweep a two-game series.

Swanson snapped a 5-all tie with a leadoff drive to center off Danny Barnes (0-1).

AMERICAN LEAGUE

RAYS 6, INDIANS 4: Corey Dickerson hit two of Tampa Bay’s season-high five home runs, leading the Rays to a win at Cleveland.

Dickerson hit solo home runs in the third and fifth off Danny Salazar (2-4). Colby Rasmus and Derek Norris also hit solo shots off Cleveland’s starter and Tim Beckham hit a two-run homer off Shawn Armstrong.

NATIONAL LEAGUE

NATIONALS 8, PIRATES 4: Bryce Harper belted his 13th home run, Ryan Zimmerman smacked a two-run double to add to his major league-leading RBI total and Washington held off host Pittsburgh.

Harper’s laser to the last row of seats in right field in the ninth gave the 24-year-old star a home run in every ballpark in the National League. He finished with two hits to move ahead of Zimmerman for the major league-lead in batting average (.388).

Zimmerman had two hits, including a double in third inning that gave him 38 RBI on the season. Jayson Werth added three hits and is batting .457 (16 for 35) in his last nine games.

Stephen Strasburg (4-1) allowed three runs in six-plus innings.

Josh Harrison had two hits for the Pirates, including his sixth home run of the season, and also avoided a tag at second base with an acrobatic slide in the sixth. Chad Kuhl (1-4) remained winless since the first week of the season.