PHILADELPHIA — Justin Upton hit his 100th career homer, Ian Kennedy threw six effective innings, and the streaking Arizona Diamondbacks beat the Philadelphia Phillies 4-2 on Friday night.

Jason Kubel also went deep for the defending NL West champion Diamondbacks, who have won four in a row and six of seven. Arizona entered just two games behind division-leading San Francisco.

Kennedy (10-8) allowed seven hits and two runs.

Takashi Saito and David Hernandez each worked a scoreless inning before J.J. Putz finished for his 20th save in 23 tries.

Nationals 7, Marlins 4

WASHINGTON - Adam LaRoche homered and drove in three runs, Mark DeRosa added three RBIS, and John Lannan pitched into the seventh inning as the Washington Nationals beat the Miami Marlins 7-4 in the first game of a doubleheader on Friday.

LaRoche had a first-inning RBI single, a third-inning home run, and a bases-loaded walk in the fourth. He has an 11-game hitting streak and is batting .463 over that stretch.

DeRosa, who missed nearly two months because of an oblique injury, doubled his RBI total for the season with a two-run single in the first-inning single and a bases-loaded walk in the fourth.

The Nationals scored seven runs off Brad Hand (0-1), who had been recalled from Triple-A New Orleans to start the game. Hand, 1-9 in his career, gave up six hits and six walks in 3 2-3 innings. He was scheduled to return to the minors after the game.

Reds 3, Pirates 0

CINCINNATI — Mat Latos pitched shutout ball into the eighth inning and hit a two-run homer Friday night as the NL Central-leading Cincinnati Reds opened a three-game series against their closest pursuers with a 3-0 win over the Pittsburgh Pirates.

Chris Heisey hustled for an inside-the-park home run and Aroldis Chapman closed out the win that gave the Reds a 4 1/2-game lead over the Pirates.

The Reds have won 14 of 15 and moved 24 games over .500 for the first time since 1999.

Latos (10-3) allowed four hits in 7 1-3 innings. Jonathan Broxton got a key double play to end the eighth and Chapman recorded his 24th save.

Zack Cozart added three hits for the Reds.

Braves 4, Astros 1

ATLANTA - Tim Hudson gave up only four hits and no earned runs in 7 1-3 innings to remain unbeaten in his career against Houston, and the Braves stayed hot with a 4-1 win Friday night that left the Astros with their worst 32-game stretch in franchise history.

The Astros are 3-29 in their last 32 games. Houston's worst 32-game stretch before the 2012 season was 5-27, most recently from June 26 to July 29, 1962 as the Colt .45s, according to STATS LLC.

The Braves improved to 7-1 on their 10-game homestand.

Hudson (11-4) improved to 5-0 in seven career starts against the Astros. He allowed one unearned run, four hits and two walks and has won five straight decisions.

Chipper Jones had a two-run double in Atlanta's three-run third inning. Martin Prado had two doubles, including a run-scoring hit in the fourth.

Cardinals 9, Brewers 3

ST. LOUIS — Rookie right-hander Joe Kelly broke a three-start losing streak and drove in the go-ahead run to help the St. Louis Cardinals to a 9-3 victory over the Milwaukee Brewers on Friday night.

St. Louis has won three of its last four while Milwaukee had a three-game winning streak snapped.

Kelly (2-4) allowed three earned runs and 10 hits over 5 2-3 innings. His last win was an 11-4 victory at Kansas City on June 22. He entered the game with seven straight quality starts but took the loss in his last three games.

His first-pitch RBI single to left off Randy Wolf (3-8) broke a 3-3 tie and capped a four-run outburst in the fourth inning.

St. Louis managed just two hits in the first three innings off Wolf but scored four runs on five hits in the fourth.

Giants 16, Rockies 4

DENVER — Ryan Vogelsong pitched into the seventh inning, Buster Posey homered among his four hits and the San Francisco Giants broke out of an offensive slump to beat the Colorado Rockies 16-4 on Friday.

Brett Pill also went deep and Angel Pagan had three hits and scored four runs for the Giants, who had lost seven of their past eight.

Wilin Rosario homered for the Rockies, who have lost 9 of 11.

The Giants were shut out twice and held to one run in two other games during their recent slump but broke out against Colorado. They had a season high in runs and matched their season best with 16 hits.

San Francisco wasted no time in getting on the board against Jonathan Sanchez (0-3). The first four batters reached as the Giants took a 2-0 lead on their former teammate. Sanchez, who tossed a no-hitter for the Giants on July 10, 2009, lasted only three innings, walking three and throwing two wild pitches.

Padres 3, Mets 1

SAN DIEGO— Carlos Quentin scored the go-ahead run in the seventh inning when he knocked the ball out of catcher Josh Thole's glove, and the San Diego Padres denied R.A. Dickey his 15th victory with a 3-1 win over the New York Mets on Friday night.

Clayton Richard (8-11) limited New York to one run and eight hits in seven-plus innings.

Dickey (14-3) held the Padres to one run and one hit through six innings before San Diego got to the knuckleballer in the seventh, scoring two runs in the inning — one earned.

The Padres managed only four hits but won for the second time in seven games. Huston Street got the final four outs for his 18th save in as many chances.

New York, which had won four of five, is 5-4 on its season-high, 11-game West Coast trip.

Dodgers 6, Cubs 1

Chad Billingsley won his third straight start since coming off the disabled list, batterymate A.J. Ellis hit two solo homers and had an RBI single, leading the Los Angeles Dodgers to a 6-1 victory over the Chicago Cubs on Friday night.

Billingsley (7-9) allowed a run and four hits in seven innings, struck out seven and walked two.

Billingsley, in the second year of a four-year contract that will pay him more than $41 million, had been 0-4 with a 4.70 ERA in his previous eight starts at Dodger Stadium since beating Pittsburgh 4-1 in his first home start of the season on April 11.

Jeff Samardzija (7-9) gave up five runs and eight hits in 5 1/3 innings without walking a batter and struck out three. The former Notre Dame wide receiver had a 1.91 ERA over his previous five starts after surrendering nine runs over 4 1/3 innings in a 17-1 loss to the New York Mets on June 27 at Wrigley Field.

Gold Glove centre fielder Matt Kemp of the Dodgers thwarted Alfonso Soriano's extra-base bid in the first inning, drifting back toward the warning track on a ball that kept carrying and making a leaping backhanded grab at the last possible instant before brushing up against the fence. Cubs right fielder Bryan LaHair turned the tables on Kemp in the bottom half with a similar play on his opposite-field drive toward the auxiliary scoreboard.