run homer in the eighth inning and the St. Louis Cardinals found a bit of missing pop, beating the New York Mets 5-4 Monday and stopping their season-worst losing streak at five. The Cardinals have never been swept in a four-game series in New York. The World Series champions had been outscored 19-1 by the Mets and no-hit by Johan Santana before salvaging the finale at Citi Field. Craig connected one out after Matt Holliday hit a leadoff single against Jon Rauch (3-5) for a 5-3 lead. Marc Rzepczynski (1-3) wound up with the win despite allowing Scott Hairston's eighth career pinch-hit homer in the seventh. Giants 3, Cubs 2: Ryan Vogelsong won his fourth straight decision, Buster Posey scored the go-ahead run on a double-play grounder in the seventh inning and the Giants beat the Cubs for a four-game sweep. Brandon Crawford hit an RBI double and drove in another run on a fielder's choice to back Vogelsong (4-2). Cubs reliever Carlos Marmol (0-2) was hit with a line drive on Angel Pagan's infield single in the seventh but stayed in the game after being checked out, then walked Brandon Belt on four pitches to load the bases for Joaquin Arias, who hit into a double play that scored a run. Dodgers 4, Phillies 3: Elian Herrera hit a tiebreaking RBI single off Jonathan Papelbon in the ninth inning to lift the Dodgers over the Phillies. Placido Polanco hit a tying, two-run homer to help the Phillies rally from a 3-0 deficit against Clayton Kershaw, but it wasn't enough. Dee Gordon ripped a triple to right-center to start the ninth against Papelbon (0-2). Herrera followed with a grounder through the shortstop hole to put major league-leading Los Angeles ahead to stay. Kershaw, the reigning NL Cy Young Award winner, gave up three runs and eight hits in seven innings to remain winless in his last three starts. Rockies 4, Diamondbacks 0: Colorado rookie Christian Friedrich pitched four-hit ball for seven innings in the best outing of his young career and the Rockies won for the seventh time in eight games. The 24-year-old left-hander struck out four and walked two, both in the first inning, to improve to 4-1 in six starts. Wilin Rosario had a solo home run and an RBI infield single for the Rockies, who snapped a five-game Chase Field losing streak. Joe Saunders (3-4) allowed four runs on 11 hits in 6 2-3 innings to take the loss. Matt Belisle and Adam Ottavino each pitched an inning to complete the shutout.