Hamels (12-6) struck out six and didn't walk a batter to record his 11th career complete game and his first win in three tries since signing a US$144 million, six-year contract on July 25. The All-Star left-hander is 4-5 since going 8-1 in the first two months of the season.
Mike Minor (6-8) took the loss for the wild card-leading Braves, who had won eight of 10. Minor allowed three runs and seven hits in seven innings.
The Phillies scored all their runs in the first inning.
Jimmy Rollins led off with a double down the left-field line. Domonic Brown lined a double to left-centre, hustling his way to second and sliding headfirst to reach safely because the ball was dropped. After an out, Howard drove an opposite-field shot out to left-centre to make it 3-0.
The Braves hadn't lost to the Phillies since May 3 at Turner Field.
DIAMONDBACKS 10, PIRATES 4
PITTSBURGH (AP) — Chris Johnson homered in the eighth and ninth innings, giving him five in eight games since being acquired in a trade by Arizona.
Johnson's homer in the eighth capped a four-run rally against Jason Grilli (1-4) that put Arizona ahead 7-4. Pittsburgh had just taken a 4-3 lead with two runs in the seventh.
Miguel Montero doubled in a run in the ninth before Johnson hit a two-run homer off Chris Resop to seal the victory for Arizona, which had lost three straight.
Johnson was acquired July 27 in a trade with Houston, where had eight homers in 92 games.
The Pirates lost for the third time in four games.
Paul Goldschmidt, who doubled twice, and Stephen Drew both had three of the Diamondbacks' 15 hits. Drew homered and drove in two runs.
Brad Ziegler (5-1), who faced one batter and induced an inning-ending double play in the seventh inning, got the win.
Travis Snider had three hits for the Pirates and Andrew McCutchen, who leads the major leagues with a .372 average, had two hits and two RBIs.
MARLINS 4, METS 2
NEW YORK (AP) — Jose Reyes extended his hitting streak to a career-high 25 games with an infield single that set up Miami's big inning, and the Marlins extended New York's home losing skid to a month.
Booed again at Citi Field, Reyes beat out a trickler that helped the Marlins score four times in the fourth. The former Mets All-Star shortstop has the longest hitting string in the majors this year.
Giancarlo Stanton hit a sacrifice fly for the Marlins after being activated from the disabled list.
The Mets lost their eighth straight at home. Their previous home win came July 7 against the Cubs.
Carlos Zambrano (7-9), recently moved to the bullpen, got four outs for the win. Steve Cishek, the sixth Miami pitcher, closed for his seventh save.
Justin Ruggiano began the Miami fourth with an infield hit off Jonathon Niese (8-6). Reyes singled and Carlos Lee had an RBI single. Stanton drove in a run and John Buck hit a two-out, two-run double for a 4-0 lead.
GIANTS 4, CARDINALS 2
ST. LOUIS (AP) — Buster Posey continued his second-half tear with a three-run homer and Barry Zito pitched 6 2-3 innings of two-run ball for San Francisco.
Posey leads the major leagues with a .448 batting average and 30 RBIs since the All-Star break, including 12 in his last six games. The home run extended his hitting streak to 11 games.
Joaquin Arias drove in the Giants' other run with an RBI double. Melky Cabrera doubled for San Francisco, giving him a big league leading 152 hits.
Zito (9-8) allowed two solo home runs by Allen Craig. He gave up eight hits overall with four strikeouts and no walks. Jeremy Affeldt got the last four outs for his third save in four chances.
Cardinals starter Lance Lynn (13-5) allowed four runs and eight hits with two walks and six strikeouts in six innings.
BREWERS 3, REDS 1
MILWAUKEE (AP) — Rookie Mike Fiers took a perfect game into the seventh inning and Aramis Ramirez hit a two-run homer off Johnny Cueto to lead Milwaukee.
Fiers (6-4) retired his first 18 batters before Zack Cozart doubled to left-centre leading off the seventh. He advanced to third on a fly ball and scored on Brandon Phillips' sacrifice fly.
The only other hits Fiers gave up were eighth-inning singles to Xavier Paul and Ryan Hanigan. The right-hander struck out pinch-hitter Ryan Ludwick to get out of the inning and left the field to a standing ovation.
Calgary's Jim Henderson pitched a scoreless ninth for his first career save. It was Milwaukee's second consecutive win over the NL Central leaders and its fifth straight victory at home.
The Reds have lost three straight for the first time since July 2-5. They remained 3 1/2 games ahead of second-place Pittsburgh.
Fiers hasn't allowed more than two runs in any of his last nine starts, going 5-2 with a 1.03 ERA and racking up 61 strikeouts in 61 innings.
Cueto (14-6) pitched seven innings, giving up three runs and six hits while striking out nine. He was trying to become the first NL pitcher to reach 15 wins this season.
NATIONALS 3, ASTROS 2, 12 innings
HOUSTON (AP) — Danny Espinosa hit a two-run homer early, and his RBI single in the 12th inning gave Washington the victory.
Michael Morse was 0-for-4 when he doubled to start the 12th inning and extend his career-high hitting streak to 16 games. He was replaced by pinch-runner Cesar Izturis, who was making his first appearance for Washington after being claimed off waivers from Milwaukee on Monday.
Roger Bernadina advanced Izturis to third with a sacrifice bunt. Espinosa's sharp grounder off Mickey Storey (0-1) skipped past the pitcher for a hit that brought Izturis home and gave the Nationals their second straight extra-inning win over Houston.
The loss dropped the Astros to 0-11 in extra-inning games this season. Washington beat them 5-4 in 11 innings on Monday.
Drew Storen (1-0) retired the last two hitters in the 11th for the win, and Tyler Clippard earned his 23rd save.
PADRES 7, CUBS 4
SAN DIEGO (AP) — Carlos Quentin hit a three-run homer, Ross Ohlendorf pitched effectively into the seventh inning and San Diego ruined Brooks Raley's major league debut.
Chase Headley and Everth Cabrera both drove in two runs for San Diego, which has won eight of 10 at home.
Chicago lost its seventh consecutive game and has been outscored 38-16 during the slide.
Promoted from Triple-A Iowa, Raley (0-1) lasted four innings while allowing seven runs and eight hits. The left-hander had four strikeouts and three walks as a replacement for injured starter Matt Garza.
Ohlendorf (4-2) gave up one unearned run and three hits in six-plus innings.
Huston Street, the fifth Padres reliever, threw a perfect ninth for his 20th save in as many chances.
San Diego held the Cubs to five hits for the second straight night, including a 2-0 victory Monday.
Raley was the Cubs' sixth-round draft pick in 2009.
ROCKIES 3, DODGERS 1
LOS ANGELES (AP) — Rookie Jeff Rutledge drove in three runs and had three doubles among his career-high four hits for Colorado.
Josh Roenicke (4-0) pitched three innings of scoreless relief for the victory. The right-hander took over for Alex White, who threw 80 pitches in four innings and allowed one hit and five walks before he was lifted for a pinch-hitter.
It was the fifth straight game in which a Rockies starter didn't reach the fifth inning. In the series opener Monday night, Drew Pomeranz threw 84 pitches over four innings and was lifted with a two-run lead before Adam Ottavino and the bullpen closed out a 2-0 victory.