Bryce Harper tripled, singled and drove in two runs for the Nationals, who won their third straight game and beat the Phillies for the sixth straight time in Philadelphia — something that never had been done in the franchise's 43-year history. Washington has defeated Philadelphia in four of the five meetings this season and 13 of the last 16 overall.
Erik Kratz homered for Philadelphia, which lost its season-worst fourth straight.
Zimmermann (3-4) earned his first win in five career starts against Philadelphia, surrendering one run and seven hits in six innings.
METS 3, PIRATES 2
PITTSBURGH (AP) — Lucas Duda smacked a go-ahead RBI-single in the top of the eighth in support of starter R.A. Dickey and the Mets edged the Pirates.
Dickey (6-1) struck out a career-high 11 in seven innings, giving up one run on four hits to move into a tie with a host of others for the most wins in the majors. Frank Francisco pitched the ninth for his 11th save.
Josh Harrison had two hits for the Pirates, who couldn't take advantage of another strong start by James McDonald.
Mike Baxter, batting leadoff for the first time in his career, doubled off Juan Cruz (1-1) with one out in the eighth then came home two batters later when Duda's liner glanced off the glove of first baseman Garrett Jones and rolled into right field.
REDS 4, BRAVES 3
CINCINNATI (AP) — Brandon Phillips drove in three runs with a pair of homers off Brandon Beachy, leading the Reds to a victory over the Braves.
Rookie shortstop Zack Cozart also homered off Beachy (5-2) as the Reds got the best of another high-powered game. The teams have combined for 10 homers in the two games, seven of them by Cincinnati.
The Reds moved a season-high four games over .500 at 23-19 with their fourth straight win.
Mat Latos (3-2) gave up five hits, including the first of Michael Bourn's two solo homers, in seven innings to win his third straight decision. Left-hander Aroldis Chapman fanned two in the ninth for his second save, pitching a day after his arrest for speeding.
MARLINS 7, ROCKIES 6
MIAMI (AP) — Ricky Nolasco gave up three runs in the first inning, then settled down to set a franchise record for career victories when the Marlins rallied past the Rockies for the second night in a row.
Nolasco (5-2) broke a tie in the third with a two-run double off Juan Nicasio (2-2) that put the Marlins ahead to stay. On his third try, the right-hander became the Marlins' sole leader in career wins with a record of 69-53.
He had been tied with Dontrelle Willis for the most victories.
Nolasco gave up four runs in six innings against the Rockies (15-27), who have lost six straight and are off to their worst start since 1995.
The Marlins (24-19) tied the franchise record for victories in May.
CARDINALS 4, PADRES 0
ST. LOUIS (AP) — Adam Wainwright threw a four-hitter and the Cardinals beat the Padres.
It was his first shutout victory since Aug. 6, 2010, and third in his career. Wainwright (3-5), who missed the 2011 season with elbow ligament replacement surgery, struck out nine and walked one while throwing 111 pitches. He retired the first eight batters and allowed just one runner to reach third base.
Carlos Beltran had two hits and two RBIs and Matt Holliday added two hits and an RBI for the Cardinals.
Edinson Volquez (2-4) gave up five hits and three runs in six innings. The former Cincinnati Red remains winless in St. Louis. He is 0-3 in four career starts at Busch Stadium with a 6.50 ERA.
GIANTS 6, BREWERS 4
MILWAUKEE (AP) — Buster Posey homered off the Miller Park scoreboard and had three RBIs as the Giants beat the Brewers.
The Giants won for the eighth time in 11 games despite being outhit 11-5.
The Brewers went 2-for-13 with runners in scoring position off San Francisco starter Matt Cain (4-2) and have lost six of seven.
Cain pitched out of trouble, allowing four runs on 11 hits without walking a batter and striking out eight in seven innings. Santiago Casilla pitched the ninth for his 11th save.
Milwaukee's Shaun Marcum (2-3) gave up six runs on five hits and two walks with five strikeouts in six innings. It was the first time this season the right-hander gave up more than three earned runs.
ASTROS 2, CUBS 1
HOUSTON (AP) — J.D. Martinez hit the go-ahead RBI single in the sixth inning and Jose Altuve had a solo homer to give the Astros a win over the Cubs.
The loss extends Chicago's losing skid to a season-long eight games.
The hit by Martinez was the first for Houston since the first inning, but Justin Maxwell and Carlos Lee both drew two-out walks before it to set up the score.
Houston starter J.A. Happ (4-3) allowed five hits and a run in six innings for the win. Closer Brett Myers pitched a perfect ninth for his 11th save.
Alfonso Soriano led off the fourth inning with a solo shot to left-centre field that tied it at 1-1. The home run marked the first time in four games that Chicago had scored before the ninth inning.
DODGERS 8, DIAMONDBACKS 7
PHOENIX (AP) — Ivan De Jesus hit a two-run double with two outs in the ninth to give the Dodgers the lead and Dee Gordon went airborne to turn a game-ending double play as the Dodgers rallied past the Diamondbacks.
The Diamondbacks, who squandered a five-run lead going into the seventh, took a 7-6 lead in the bottom of the eighth on Lyle Overbay's homer off Josh Lindblom (2-0).
J.J. Putz (0-3) couldn't close it for Arizona, allowing De Jesus to drive a double to centre and make it 8-7.
With runners on first and third in the bottom of the ninth, Kenley Jansen got Jason Kubel to ground to second and Gordon leaped over a late sliding Justin Upton to make a one-hop throw and complete the double play.