MIAMI — R.A. Dickey pitched a five-hit shutout for his 17th win, Ike Davis backed him with a home run, and the New York Mets beat the Miami Marlins, 3-0, Friday. Dickey (17-4) struck out seven and walked three in his NL-leading fifth complete game. The knuckleballer has three shutouts this year and six in his career. The game took just 2 hours, 7 minutes. Nationals 10, Cardinals 0: In Washington, Gio Gonzalez earned his 17th win with his first career shutout, and the Nationals handed Adam Wainwright his shortest start this season as Washington routed the Cardinals. Adam LaRoche, Bryce Harper and Ryan Zimmerman each drove in two runs, and the Nationals sent 10 batters to the plate during a four-run third inning against Wainwright (13-11), who entered 5-0 in August. Perfect through three innings, Gonzalez (17-7) held the suddenly anemic St. Louis lineup hitless through four innings. He finished with eight strikeouts and walked three during his 119-pitch outing en route to his fourth win in five starts and third career complete game. Cubs 6, Giants 4: In Chicago, Alfonso Soriano hit a two-run homer that landed on Waveland Avenue and Anthony Rizzo added a solo shot, helping Chris Volstad and the Cubs beat the weary Giants. Soriano also had a two-out RBI single in the first as Chicago earned its first win of the season against the NL West leaders in five tries. The Cubs were swept in a four-game series at San Francisco in June. Volstad (2-9) allowed two runs and five hits in 5 2-3 innings for his second consecutive victory after a 24-start winless streak. Phillies 8, Braves 5, 10 innings: In Atlanta, Erik Kratz homered in the ninth inning off Braves closer Craig Kimbrel, and John Mayberry Jr. hit a three-run shot off Cristhian Martinez in the 10th to help the Phillies rally past Atlanta. Josh Lindblom (3-3) pitched a scoreless ninth, allowing one walk and striking out one. Jonathan Papelbon earned his 31st save in 34 chances by striking out Dan Uggla, getting Paul Janish to fly out and striking out Eric Hinske in the 10th. Martinez (5-4) allowed three hits, three runs, one walk and struck out two. Reds 9, Astros 3: In Houston, Jay Bruce had a three-run homer, and Zack Cozart added a two-run shot to help the Reds beat the Astros. Cozart's home run gave the Reds an early lead before consecutive homers by Fernando Martinez and Matt Dominiguez tied it at 2-all in the fourth inning. Chris Heisey singled in a run in the fifth to put the Reds on top and Bruce connected for his 28th home run later in the inning to cushion the lead. It's the fourth straight win for the NL-Central-leading Reds. The loss wraps up a dismal August for the last-place Astros, who have dropped six straight and went 5-22 in this month. Reds starter Mike Leake (7-8) allowed seven hits and struck out six in six innings. Brewers 9, Pirates 3: Corey Hart and Aramis Ramirez both went 3-for-4 with home runs, and Pittsburgh starter Jeff Karstens left for the second consecutive time with an injury as the Milwaukee Brewers beat the Pirates. Milwaukee starter Mark Rogers (3-1) gave up one run in 5 1/3 innings to win his third consecutive start in his last outing of the season. Ramirez had four RBIs and Nyjer Morgan had three hits, a stolen base and a walk for the Brewers. Karstens (5-4) allowed four runs in the first inning and was forced to leave for the second consecutive start with a lower body injury. The right-hander allowed five of six batters to reach base before exiting with discomfort in his right hip flexor. Elsewhere it was: San Diego 5, Colorado 4; Arizona 4, LA Dodgers 3 (11 innings). — Agencies