LaRoche and Jayson Werth had four hits apiece for the NL East-leading Nationals, who opened a season-high 7 1/2-game advantage in the division. Second-place Atlanta lost to Colorado 6-0.
Desmond, Jesus Flores, Tyler Moore and Ryan Zimmerman also went deep. The six home runs matched a team record.
Washington right-hander Edwin Jackson (9-9) allowed four runs and seven hits in 5 2-3 innings.
Desmond hit a two-run drive off Chris Rusin (0-2) in the first for his 20th homer. The All-Star shortstop added a two-run double in Washington's three-run second.
Alfonso Soriano hit his 26th homer and a two-run triple for the Cubs, who have dropped four straight. Starlin Castro drove in two runs.
DIAMONDBACKS 8, GIANTS 6, 11 INNINGS
SAN FRANCISCO (AP) — Aaron Hill had a career-high five hits and Jason Kubel tripled home the tie-breaking run in the 11th inning to lead Arizona over San Francisco.
The first-place Giants used 11 pitchers, matching a major league record for extra-inning games. They remained 4 1/2 games ahead of Los Angeles in the NL West because the Dodgers also lost at home in extra innings, to San Diego.
Hill drove in two runs and was a triple shy of his third cycle this season. John McDonald also had two RBIs for the Diamondbacks, who ended a three-game skid.
Brandon Belt had three hits, including a two-run homer, for San Francisco. Pablo Sandoval knocked in two runs but the Giants had their three-game winning streak stopped.
Josh Collmenter (4-3) pitched two innings for the win.
Hill opened the 11th with a single off George Kontos (1-1) and scored on Kubel's one-out triple to right off Javier Lopez. After an intentional walk to Paul Goldschmidt, Miguel Montero added an RBI single.
PADRES 6, DODGERS 3, 11 INNINGS
LOS ANGELES (AP) — Logan Forsythe hit a two-run single for San Diego with the bases loaded in the 11th inning after Yasmani Grandal tied the score against Los Angeles with a two-run homer in the eighth.
Andre Ethier homered but the Dodgers wasted an excellent outing from ace Clayton Kershaw and dropped 1 1/2 games behind St. Louis in the race for the second NL wild card.
John Ely (0-1), working his second inning of relief, gave up a leadoff single to Cameron Maybin in the 11th. Everth Cabrera followed with a bunt single, and both runners took an extra base on third baseman Luis Cruz's throwing error to first.
Will Venable was intentionally walked with one out before Forsythe lined a 1-2 pitch to right-centre. Chase Headley followed with an RBI single.
Padres rookie Tommy Layne (1-0) pitched a perfect inning for his first major league win, striking out Adrian Gonzalez, Matt Kemp and Hanley Ramirez on 13 pitches. Luke Gregerson got three outs for his fourth save.
ROCKIES 6, BRAVES 0
ATLANTA (AP) — Carlos Gonzalez hit his second home run since July 23 to give Colorado the lead, and Jordan Pacheco also went deep for the Rockies.
Four pitchers combined on a nine-hit shutout. Carlos Torres (4-1), who took over after Drew Pomeranz lasted only three innings, threw three scoreless frames. Rex Brothers and Matt Belisle closed it out.
Gonzalez hit a solo drive off Tommy Hanson with one out in the fourth. Gonzalez, who had two hits, has 22 homers — including his most recent shot before Tuesday on Aug. 24.
Pacheco led off the fifth with his fourth homer for a 2-0 lead.
Hanson (12-8) allowed five hits in 5 2-3 innings. He has lost three straight starts.
Pomeranz needed 72 pitches to make it through three innings. He gave up five hits and one walk.
PIRATES 6, ASTROS 2
PITTSBURGH (AP) — Andrew McCutchen had his major league-leading sixth four-hit game of the season and drove in three runs to help the Pirates snap a four-game losing streak.
Brock Holt added four hits in just his third major league start, and Pittsburgh's Wandy Rodriguez (10-13) scattered four hits over seven shutout innings against his former team.
Jordan Lyles (3-11) gave up five runs — four earned — in 4 2-3 innings for Houston, which failed to win consecutive games for just the second time since the All-Star break.
The Pirates came in losers in 10 of their previous 13, including a 5-1 setback to the Astros on Monday.
CARDINALS 5, METS 1
ST. LOUIS (AP) — Jaime Garcia carried a shutout into the eighth inning and Yadier Molina got his 1,000th career hit with an infield single that started a three-run second for St. Louis against rookie Matt Harvey.
Daniel Descalso and David Freese had two hits and an RBI apiece for the Cardinals, who are 42-26 at home for the second-best mark in the National League. St. Louis will go for a three-game sweep Wednesday with Adam Wainwright facing 17-game winner R.A. Dickey.
Pinch-hitter Mike Baxter hit a bases-loaded sacrifice fly in the eighth for the Mets. Harvey (3-4) gave up three runs and six hits in five innings.
Cardinals slugger Matt Holliday left with lower back tightness after walking to start the seventh. The team said Holliday, among the league leaders with 92 RBIs, was day to day.
Garcia (4-6) gave up an unearned run in 7 1-3 innings for his first victory in five decisions since May 16.
REDS 2, PHILLIES 1
CINCINNATI (AP) — Jay Bruce homered for the third straight game, hitting a two-run shot that sent the Reds to the win with first baseman Joey Votto, from Toronto, watching from the bench.
Votto was activated off the disabled list before the game, but didn't play. Cincinnati went 32-16 without him, taking control of the NL Central.
Bruce's 31st homer in the sixth inning ended a four-game winning streak by Kyle Kendrick (8-10). Bruce has homered in four of his last five games.
Mat Latos (12-4) gave up one run — on a bases-loaded walk — and four hits in seven innings. Aroldis Chapman worked the ninth for his 35th save in 39 chances.
Jimmy Rollins doubled off Latos in the fifth inning, making him the fourth Phillies player to reach 2,000 career hits.
BREWERS 8, MARLINS 4
MIAMI (AP) — Norichika Aoki and Jeff Bianchi homered and drove in three runs apiece to power the Brewers to the victory.
Ryan Braun drove in Milwaukee's other two runs to give him 98 RBIs, which leads the National League. The reigning NL MVP is looking for his fifth straight season with 100 RBIs.
The Brewers' Kameron Loe (6-4) and Marlins' Mike Dunn (0-2) each faced one batter and threw just two pitches. John Axford got one out for his 24th save.
Giancarlo Stanton hit his 30th home run and Gorkys Hernandez hit his first career long ball for the Marlins.