WASHINGTON — Bryce Harper, Ian Desmond and Denard Span all homered, powering the Washington Nationals to a 4-1 win over the New York Mets Saturday. Dan Haren (5-11) pitched seven innings for his first win since May 9, allowing one run and three hits. Desmond and Span hit back-to-back homers against Dillon Gee (7-8) in the second inning and Harper followed with a two-run drive in the third. Harper returned to the starting lineup after being limited to pinch-hitting duty in the second game of Friday's doubleheader. The All-Star outfielder aggravated his left knee while diving for a ball in the opener. Braves 2, Cardinals 0: Andrelton Simmons hit a two-run double in the eighth inning and Atlanta, boosted by Julio Teheran's sharp outing, beat St. Louis in a matchup of NL division leaders. Teheran allowed two hits in seven innings, striking out six and walking one. Simmons' bases-loaded, two-out double came on a 99 mph fastball from Trevor Rosenthal. Cardinals starter Joe Kelly pitched 6 1-3 scoreless innings, allowing seven hits and walking three. Pirates 7, Marlins 4: Michael McKenry had a career-best four hits and drove in two runs and Neil Walker and Garrett Jones each added two RBIs in Pittsburgh's victory over Miami. McKenry, who came into the night batting .191, raised his average 26 points with a double and three singles. Walker added three hits for the Pirates, the NL wild-card leaders who set the tone with three first-inning runs against Miami's Tom Koehler (2-6). Koehler gave up nine hits and five runs in five innings. Padres 12, Diamondbacks 3: Andrew Cashner threw six solid innings and hit his first career home run to help lead San Diego over Arizona. Chris Denorfia and Chase Headley added back-to-back home runs, Yonder Alonso drove in four runs and Carlos Quentin had three RBIs for the Padres, who have won two of their last three and four of six. Cashner (7-5) allowed three runs on four hits, walked five and struck out five for his second straight win, both coming during a 10-game road trip. Paul Goldschmidt and Miguel Montero homered for the Diamondbacks. Cubs 1, Giants 0: Nate Schierholtz homered off former teammate Sergio Romo with one out in the ninth inning to lift Chicago over San Francisco. Schierholtz worked a full count off Romo (3-6) before hitting a towering blast into the right field stands to hand Romo his second loss in as many games. Starlin Castro added two hits for Chicago, which is 18-13 in its last 31 games. Dodgers 4, Reds 1: Hyun-Jin Ryu gave up two hits over seven innings and retired his last 13 batters, Skip Schumaker hit a tiebreaking two-run homer, and Los Angeles beat Cincinnati. Ryu (9-3) had nine strikeouts in a span of 13 batters. Cincinnati's run came on a homer by Jay Bruce in the second. The Dodgers increased their NL West lead to 1½ games over Arizona. Brewers 7, Rockies 5: Carlos Gomez had two hits and three of Milwaukee's five stolen bases, Juan Francisco and Jonathan Lucroy homered, and the Brewers held on to beat Colorado on a rainy night. Milwaukee's Jean Segura had two hits and two RBIs before leaving with tightness in his right forearm. Troy Tulowitzki had a home run among his three hits and Wilin Rosario also went deep for the Rockies. — Agencies