ARLINGTON, Texas - Josh Hamilton hit a two-run homer and Martin Perez allowed only two hits to earn his first win in his comeback from Tommy John surgery as the Texas Rangers edged the San Francisco Giants 2-1 on Sunday.

Perez (1-2) threw 8 1/3 innings, leaving after allowing a one-out, ninth-inning double to Angel Pagan. Sam Dyson earned his first career save, getting a game-ending double play after allowing a bases-loaded, RBI single to Buster Posey.

In Perez's previous start last Monday, he failed to get through the second inning against the New York Yankees and allowed eight earned runs in a 21-5 loss.

Hamilton homered into the right-field corner off Mike Leake (9-6), who made his first start with San Francisco. Before that, Texas had put eight runners on without scoring.

METS 5, NATIONALS 2

NEW YORK - Curtis Granderson, Daniel Murphy and streaking Lucas Duda homered in a span of five pitches, a sudden power strike that charged up Citi Field and helped the Mets complete a three-game sweep.

Noah Syndergaard (6-5) struck out nine over eight innings, and New York pulled within percentage points of first-place Washington in the NL East. Tyler Clippard got the last three outs for his first save with the Mets.

New York finished a wildly eventful 6-4 homestand that featured one trade that fell through, the additions of four new players - including slugger Yoenis Cespedes - and a 162-game drug suspension for reliever Jenrry Mejia.

Anthony Rendon hit his first homer of the season, and Yunel Escobar also went deep for Washington.

Jordan Zimmermann (8-7) gave up the five runs, six hits, two walks and struck out seven in six innings.

CARDINALS 3, ROCKIES 2

ST. LOUIS - Brandon Moss had his first big hit with St. Louis, a game-ending single in the ninth inning, and Randal Grichuk had a two-run homer to lead the Cardinals.

Moss' one-out hit to left off reliever Scott Oberg (2-2) drove in Jason Heyward, who doubled with one out.

Closer Trevor Rosenthal (2-2) pitched a perfect inning to hlep the Cardinals win for the ninth time in 12 games and improve to a major league-best 40-16 mark at home.

Colorado has lost four of five.

St. Louis jumped to a 2-0 lead on Grichuk's home run off Colorado starter Yohan Flande in the fifth. It was Grichuk's 12th homer of the season and fifth since the All-Star break.

Colorado tied it in the sixth on Ben Paulsen's RBI double and a wild pitch by reliever Steve Cishek.

YANKEES 12, WHITE SOX 3

CHICAGO - Jacoby Ellsbury and Mark Teixeira homered against Jeff Samardzija, and the New York Yankees pounded the White Sox.

Stephen Drew added three hits and four RBIs, helping the AL East-leading Yankees close out a 6-4 road trip - matching a season high. Ellsbury drove in three runs, and Didi Gregorius had two hits and two RBIs.

New York also got a lift from Ivan Nova (4-3), who pitched six innings of five-hit ball in his third consecutive victory. Nova's previous start on Monday at Texas was cut short by arm fatigue, a condition he contributed to his comeback from Tommy John surgery in April 2014. Nova allowed just one run on Melky Cabrera's RBI single in the sixth.

Samardzija (8-6) was tagged for nine runs, matching a season high, and eight hits in 4 2/3 innings.

CUBS 4, BREWERS 3

MILWAUKEE - Closer Hector Rondon nearly squandered a three-run lead, and rookie Kris Bryant got hurt in the Cubs' win that completed a four-game sweep.

Starter Clayton Richard (2-0) and the Cubs' bullpen held off the Brewers until the ninth, when Rondon allowed the first two runners to reach base with his team leading 4-1.

Ryan Braun scored on a groundout with one out, and Hernan Perez drove in another run with a two-out single. Rondon then got pinch-hitter Logan Schafer to line out sharply to centre for his 16th save.

Bryant left in the fifth after sliding headfirst into second and appearing to get tagged on the helmet by shortstop Jean Segura. Bryant's neck or upper back also appeared to bump into Segura's leg.

Bryant, who reached on an RBI single off Kyle Lohse (5-13), was running after a throw to the plate was cut off. Bryant was lifted for a pinch runner after a safe call was upheld on a replay review.

ATHLETICS 2, INDIANS 1, 10 innings

OAKLAND, Calif. - Mark Canha hit a two-out double in the 10th inning to drive in Sam Fuld and lift Oakland past Cleveland.

Fuld singled off Cody Allen (1-3) before Canha hammered a 3-1 pitch off the wall in left-centre. Fuld raced around third base and slid into home, easily beating the relay throw from shortstop Francisco Lindor.

Canha entered the game as a pinch-hitter in the fifth inning. It was the first game-ending hit of his career.

Francisco Rodriguez (2-1) pitched one inning for the win, striking out Lindor with the go-ahead run on third base in the top of the 10th.

Fuld finished with two hits while Billy Burns drove in Oakland's other run.

Lonnie Chisenhall singled and scored for Cleveland, which has lost two straight.

DODGERS 5, ANGELS 4, 10 innings

LOS ANGELES - Andre Ethier hit his second dramatic home run in three innings, a two-run shot in the 10th, and Howie Kendrick also homered to lead the Dodgers to a three-game Freeway Series sweep of the sputtering Angels.

Drew Rucinski (0-2) walked Adrian Gonzalez with one out in the 10th before Ethier deposited the rookie right-hander's 1-1 pitch into the Angels' bullpen in right field for his 12th homer and the Dodgers' NL-leading 131st home run.

Pedro Baez (4-2) got the victory with 1 1/3 innings of relief.

Three days he was acquired from the Miami Marlins in a three-team, 13-player trade involving the Atlanta Braves, Mat Latos yielded a run and four hits over six innings in his Dodgers debut and departed with a 2-1 lead.

MARINERS 4, TWINS 1, 11 innings

MINNEAPOLIS - Logan Morrison's RBI double in the 11th inning put Seattle ahead and Austin Jackson added a two-run double to help the Mariners outlast Minnesota.

Rookie Ketel Marte had three hits and a walk in his third major league game for Seattle, which split the four-game series and won for the second time in seven games.

Reliever Kevin Jepsen (2-6) lost his Minnesota debut after being picked up before Friday's trading deadline. Jepsen walked two batters and struck out Nelson Cruz with two runners on.

Fernando Rodney (4-4) pitched around a walk in the 10th, and Tom Wilhelmsen allowed a leadoff double in the 11th before recording his second save in as many chances.

ASTROS 4, DIAMONDBACKS 1

HOUSTON - Collin McHugh threw seven solid innings, and Carlos Gomez delivered a two-run, go-ahead single to lead Houston.

Evan Gattis added a solo home run in the fifth to give the Astros the three-run lead.

McHugh (13-5) won his fourth straight start, giving up one run and eight hits with six strikeouts. The right-hander, who is tied for the AL lead in wins with teammate Dallas Keuchel, has allowed two runs or less in three of his last four starts.

Pat Neshek threw a perfect eighth, and Luke Gregerson pitched the ninth for his 22nd save.

Jose Altuve and Jason Castro both had two hits for the Astros, who are an AL-best 38-18 at home.

RAYS 4. RED SOX 3

BOSTON - Asdrubal Cabrera had a game-tying RBI double and scored on James Loney's single in the eighth inning, helping Tampa Bay avoid a three-game sweep.

Brandon Guyer opened the game with a homer for the Rays, who had lost 13 of their last 16 road games.

David Ortiz had an RBI for Boston, passing Hall of Famer Andre Dawson for 37th place with his 1,592nd RBI.

The Red Sox were looking for their first sweep of a series of three or more games since early June.

Steve Geltz (2-4) got the victory, retiring the only batter he faced. Brad Boxberger, the fourth reliever, struck out the final three batters for his 26th save.

Trailing 3-2, Evan Longoria opened the eighth with a double off the Green Monster against Junichi Tazawa (2-4). One out later, Cabrera hit his ground-rule double over the head of right fielder Rusney Castillo. Loney followed with a bloop hit to centre.

BRAVES 6, PHILLIES 2

PHILADELPHIA - Jace Peterson had three hits, including a three-run home run, and Julio Teheran pitched seven strong innings as Atlanta snapped a season-worst six-game losing streak.

Chris Johnson, Jonny Gomes and Ryan Lavarnway all had an RBI for the Braves, who won for just the second time in their last 15 road games to avoid a four-game series sweep.

Ryan Howard had two hits, one a double, for the Phillies, who lost for just the third time in 15 games since the All-Star break.

Teheran (7-6) earned his first road win since his season debut on April 6 at Miami.

Adam Morgan (2-3) surrendered four runs and seven hits in five innings in his seventh career start.

BLUE JAYS 5, ROYALS 2

TORONTO - Chris Colabello hit a two-run home run, R.A. Dickey threw seven shutout innings and Toronto beat Kansas City in a testy matchup while taking three of four from the AL's top team.

Both benches and bullpens emptied after Toronto reliever Aaron Sanchez was ejected for throwing at Kansas City's Alcides Escobar in the eighth. It was the climax of a game-long spat that began when Royals starter Edinson Volquez hit Josh Donaldson on the left arm in the first.

Pitching on three days' rest, Dickey (6-10) allowed just two hits, both singles, and walked two in winning his third straight start. Roberto Osuna got the last four outs for his seventh save.

Volquez (10-6) allowed two runs and four hits in six innings.

MARLINS 5, PADRES 2

MIAMI - Adeiny Hechavarria hit a three-run home run off Brandon Maurer with one out in the ninth inning to lift Miami past San Diego.

It was the first career walkoff homer for Hechavarria, the Marlins' No. 8 hitter. It came after San Diego's Alexi Amarista - the Padres' No. 8 hitter - tied the game in the top of the ninth with a two-run homer off Marlins closer A.J. Ramos (1-3).

Maurer (7-4) faced four batters, and three scored. Martin Prado led off with a walk, Cole Gillespie reached on a fielder's choice that forced Prado, Jeff Mathis walked on a full count and Hechavarria then ended it as Miami avoided getting swept.

Marlins starter Jose Fernandez struck out 10 in six shutout innings, allowing four hits.

PIRATES 3, REDS 0

CINCINNATI - Charlie Morton pitched five-hit ball for seven innings, Neil Walker hit a review-aided home run and Pittsburgh won a game in which benches cleared after All-Stars Andrew McCutchen and Brandon Phillips were hit by pitches.

No punches were thrown between two teams with a history of altercations dating back a couple of years, but the altercation rekindled twice before order was restored. Pirates first baseman Sean Rodriguez and Cincinnati's Joey Votto were ejected.

Pirates Closer Mark Melancon and manager Clint Hurdle were automatically ejected after Melancon hit Tucker Barnhart with one out in the ninth. Newly acquired Joakim Soria got the final two outs for his first National League save.

Morton (7-4) improved to 4-0 with a 1.99 ERA in his last six in Cincinnati.

Reds rookie Keyvius Sampson (0-1) allowed three runs and three hits with one walk and six strikeouts in five innings.

TIGERS 6, ORIOLES 1

BALTIMORE - Daniel Norris took a three-hitter into the eighth inning in his Detroit debut, J.D. Martinez hit a three-run homer and the Tigers earned a split of the four-game series.

Norris (2-1) was obtained by the Tigers on Thursday in the deal that sent former Cy Young Award winner David Price to Toronto. Making his seventh career start, the 22-year-old Norris provided a glimpse of his potential against a contender that won seven of its previous eight games.

Norris allowed one run, four hits and a walk in 7 1/3 innings - the longest outing of his career. The left-hander hadn't started in the majors since April 30, and was 3-10 with a 4.27 ERA for Triple-A Buffalo this season.

Baltimore's Ubaldo Jimenez (8-7) gave up six runs and six hits in 4 2/3 innings.