PITTSBURGH — Pedro Alvarez homered twice and drove in four runs, James McDonald scattered two hits over seven innings and the Pittsburgh Pirates beat the St. Louis Cardinals 9-0 Tuesday night. Alvarez hit a two-run homer in the third to give the Pirates a comfortable lead, added an RBI double in the fourth and then hit a 469-foot drive to center in the sixth. He went 4 for 5 as Pittsburgh drew within two games of the Cardinals in the race for the NL's second wild-card spot. McDonald (12-6) gave up two hits, walked one and struck out six to beat Jake Westbrook (13-10) for the second time in two weeks. The Cardinals played most of the game without catcher Yadier Molina, who sustained neck, back and shoulder injuries in a violent collision with Josh Harrison. Marlins 9, Nationals 0: Stephen Strasburg gave up a career-high seven runs in five innings and first-place Washington's losing streak reached five games when the Nationals were beaten by Ricky Nolasco and last-place Miami. Nolasco (10-12) allowed five hits in his third career shutout and eighth complete game. Strasburg (15-6) came into the game with a streak of 27 consecutive scoreless innings against Miami in five starts since last September. But he gave up a homer to his second batter, Justin Ruggiano, and trailed 5-0 by the third inning. The Nationals began the night with baseball's best record, but they're saddled with a losing streak that matches their season high. Mets 9, Phillies 5, 10 innings: Ike Davis hit a tiebreaking double during a four-run 10th inning, Kelly Shoppach had a two-run homer and New York beat Philadelphia for its third straight victory. Shoppach hit a tying double in the eighth and then connected off B.J. Rosenberg (0-2). Mike Baxter also hit a two-run shot for the Mets, who are 6-1 in Philadelphia this season. It was the first time in 10 games New York scored more than three runs. Giants 3, Astros 2: Pinch-hitter Hector Sanchez delivered a go-ahead single in the ninth inning and San Francisco rallied to beat Houston. The NL West leaders were down 2-1 entering the ninth. Brandon Belt singled off Wesley Wright to start the inning before pinch-hitter Joaquin Arias doubled off Wilton Lopez (5-3) to tie it. Sanchez completed the rally with his one-out liner to center. Rockies 8, Dodgers 4: Wilin Rosario homered among his three hits and drove in three runs, Tyler Chatwood pitched five effective innings and Colorado beat Los Angeles. Andrew Brown had three hits for the Rockies, who have won eight of 10. Chatwood (4-3) allowed two earned runs and struck out four. Hanley Ramirez homered for the Dodgers, who have lost three straight after winning their first game following a nine-player trade with Boston that brought Adrian Gonzalez and Josh Beckett [stats] to Los Angeles. Brewers 4, Cubs 1: Jeff Bianchi hit a three-run shot for his first big league homer to lead the Brewers over Chicago. Bianchi went deep off Travis Wood (4-11) with two outs in the second for Milwaukee, which has won seven of eight and beaten the Cubs seven straight times. Reds 5, Diamondbacks 2: Johnny Cueto scattered four hits over seven innings for his major league-leading 17th win and the Cincinnati Reds beat the Arizona Diamondbacks 5-2. Cueto (17-4) gave up two runs, struck out one and walked five for his eighth victory in nine decisions. The right-hander lowered his NL-leading ERA to 2.48. Braves 2, Padres 0: Kris Medlen extended his scoreless streak to 28 1-3 innings by holding San Diego to five singles over eight innings and leading the Atlanta Braves to a 2-0 victory. — Agencies