Gonzalez (6-1), a former Phillies farmhand, struck out seven of the first nine batters and finished with nine strikeouts. That upped his total to 35 over his last four starts, all wins, in 25 innings.
Bryce Harper had two hits for Washington.
Sean Burnett came in with one out in the ninth after Nationals closer Henry Rodriguez allowed runners to reach second and third and escaped a jam to earn his second save. Ty Wigginton hit a sacrifice fly off Burnett, but Placido Polanco lined out with two on to end it.
Kyle Kendrick (0-4), making his second start in place of injured Vance Worley, allowed two runs and five hits in six innings. It was the third straight loss for the Phillies, who have dropped four of five to Washington this season and 12 of the last 15 meetings overall.
DODGERS 6, DIAMONDBACKS 1
PHOENIX (AP) — Matt Treanor, Andre Ethier and James Loney homered to back Chris Capuano, and Los Angeles beat Arizona for its fifth straight win.
Capuano (6-1) allowed one run and four hits in six innings, striking out five and walking one. Treanor gave the Dodgers left-hander all the support he needed with his first home run of the season, a two-run shot off Patrick Corbin (2-3) in the second.
Ethier's solo home run into the swimming pool area in right-centre came off reliever Craig Breslow in the seventh and raised his NL-best RBI total to 38.
Loney added a two-run homer deep into the right-field seats off Bryan Shaw in the eighth. It came one pitch after Justin Sellers' first career triple brought in the Dodgers' fourth run.
The Diamondbacks have lost eight of nine home games and 13 of their last 16. The NL West-leading Dodgers have their third winning streak of at least five games and are 5-2 since Matt Kemp went on the 15-day disabled list with a left hamstring strain.
MARLINS 7, ROCKIES 4
MIAMI (AP) — Giancarlo Stanton hit a grand slam off Jamie Moyer in a five-run fourth inning, Mark Buehrle was dominant after a shaky first and the surging Miami Marlins beat Colorado.
Austin Kearns tied a career best with four hits for the Marlins, whose 15-5 record in May leads the majors.
Buehrle (4-4) worked 7 2-3 innings, giving up four runs and four hits in the first and one more hit the rest of the way. Heath Bell pitched the ninth for his sixth save in 10 chances.
Moyer (2-4) allowed nine hits and six runs in 3 2-3 innings in his debut at Marlins Park, the 50th big league stadium in which the 49-year-old has appeared during his career.
Troy Tulowitzki hit a two-run homer and Michael Cuddyer had a two-run double for the Rockies.
REDS 4, BRAVES 1
CINCINNATI (AP) — Right-hander Mike Leake hit his first career homer — one of three solo shots in a row by Cincinnati — and allowed only two hits over eight innings for a victory against Atlanta.
Drew Stubbs hit two of the career-high four homers allowed by Braves starter Mike Minor (2-4). All the runs scored on solo homers at one of the majors' most hitter-friendly ballparks.
Leake (1-5) finally got his first victory in eight starts this season, doing a little bit of everything. He struck out a season-high six and retired 14 in a row after Juan Francisco homered in the first inning.
Jose Arredondo walked two batters with two outs in the ninth. Sean Marshall retired Jason Heyward on a fly ball for his eighth save, completing the two-hitter.
PIRATES 5, METS 4
PITTSBURGH (AP) — Neil Walker scored on Clint Barmes' tie-breaking sacrifice fly in the eighth inning and Pittsburgh rallied against Johan Santana and the New York Mets.
Mike McKenry tied it with a two-run homer in the seventh off Santana and Walker made it all the way to third in the eighth when his long drive off Jon Rauch (3-3) glanced off the glove of centre fielder Kirk Nieuwenhuis for an error and rolled to the wall. One batter later, Barmes hit a fly to right and Walker just beat the wide throw from Lucas Duda.
Jared Hughes (1-0) earned his first major league win in relief. Joel Hanrahan worked the ninth for his 10th save.
David Wright had two hits for the Mets to lift his batting average to a major league-best .415.
CARDINALS 4, PADRES 3
ST. LOUIS (AP) — Tyler Greene hit a go-ahead, two-run homer in the eighth inning, trumping Jesus Guzman's two-run double in the top half, and St. Louis beat San Diego to snap a four-game losing streak.
Jaime Garcia allowed two runs in seven-plus innings for the injury-riddled Cardinals, who maintained their half-game lead in the NL Central over Cincinnati. St. Louis has won just three of its last 11.
Yadier Molina hit a broken-bat single with one out in the eighth off Andrew Cashner (2-3). With two outs, Greene homered to right-centre for his third hit.
Jason Motte (3-1) allowed Guzman's two-run double but finished off the win.
The Padres are a major league-worst 4-11 on the road after dropping the first game of a 10-game trip.
GIANTS 4, BREWERS 3, 14 INNINGS
MILWAUKEE (AP) — Backup catcher Hector Sanchez led off the 14th inning with a home run to lift San Francisco over Milwaukee.
Buster Posey hit a three-run shot in the first, accounting for the rest of San Francisco's runs. Sanchez's second homer of the season came off reliever Juan Perez (0-1).
Ryan Braun tied it with a two-run homer in the eighth for the Brewers but left the game because of tightness in his right groin after grounding out to end the 10th.
Santiago Casilla (1-2) pitched the final two innings for the win. Madison Bumgarner struck out 10 in 7 2-3 innings for the Giants.
ASTROS 8, CUBS 4
HOUSTON (AP) — Jason Castro and Chris Johnson each hit a three-run homer and Bud Norris threw seven scoreless innings to give Houston a victory over slumping Chicago.
Castro's home run came in the second inning and Johnson added his in the third, handing the Cubs their season-high seventh loss in a row.
Jed Lowrie homered for the second straight game, hitting a solo shot in the seventh to give the Astros three homers for the second time in three games.
Norris (5-1) allowed five hits and struck out eight. He has allowed just one earned run during his current four-game winning streak.
Cubs starter Matt Garza (2-2) yielded a season-high seven runs in three innings — his shortest start of the season.