Edwin Jackson and three relievers combined on a five-hitter, and the Cubs handed the Pirates their third loss in 14 games. Pittsburgh came in with baseball's best record and a seven-game, road-winning streak.
Soriano hit a drive off Charlie Morton in the fourth and a shot into the bleachers in left to make it 4-1 in the fifth.
That was enough for Jackson (5-10), who won his second straight start. He held the Pirates to one run and four hits in 5 2-3 innings.
Morton (1-2) pitched six innings for Pittsburgh, allowing four runs and seven hits. He struck out six and walked three.
CARDINALS 5, MARLINS 4
Jay drew a full-count walk off A.J. Ramos (3-3) with two outs in the ninth and took third easily on Robinson's pinch-hit single. He scored without a play after Stanton hesitated before throwing a relay that skipped under Logan Morrison's glove at first base.
The Marlins got homers from Derek Dietrich and Morrison but their run of four straight series wins ended after they lost their second straight to the Cardinals.
Morrison has four homers in six games against the Cardinals.
NATIONALS 5, PADRES 4
Adam LaRoche homered, and Denard Span and Ian Desmond added two hits apiece as the Nationals won their third straight. Since returning from the disabled list and homering in his first at-bat Monday night against Milwaukee, Harper had gone 0 for 18 before his RBI single.
Jesus Guzman hit a three-run homer and doubled for San Diego, which has lost eight straight.
Nick Vincent (2-1) took the loss after getting only one out in the Nationals' two-run seventh inning.
BRAVES 13, PHILLIES 4
PHILADELPHIA -- Jason Heyward hit a three-run homer to lead an Atlanta offense that scored in all but two innings, Tim Hudson pitched seven strong innings, and the Braves set season highs for runs and hits in a rout of Philadelphia.
Hudson (5-7) allowed one run and five hits to earn his first victory since May 5. The right-hander had been 0-6 with a 4.50 ERA in his last 10 starts. He struck out four and didn't walk a batter.
GIANTS 4, DODGERS 2
SAN FRANCISCO -- Madison Bumgarner drove in two runs and struck out nine in seven innings, and San Francisco overcame an embarrassing lineup mistake to beat Los Angeles.
The Giants were caught batting out of order in the first inning, wiping away Buster Posey's RBI double. San Francisco manager Bruce Bochy submitted a lineup with Posey batting fourth, but the reigning NL MVP and batting champion hit third.
On the day he earned his first All-Star selection, Bumgarner (9-5) helped erase Bochy's big blunder by retiring his first 14 batters. Tim Federowicz's two-run homer off Bumgarner accounted for each of Los Angeles' runs.
Sergio Romo pitched a perfect ninth for his 20th save.
Stephen Fife (3-3) allowed seven hits and four runs -- although only one was earned -- in 4 1-3 innings. The Dodgers committed three errors and never got going offensively.
BREWERS 7, METS 6
Gallardo (7-8) allowed four earned runs, struck out six and walked three. In his previous outing Monday against Washington, Gallardo gave up nine hits and eight earned runs in three innings. Francisco Rodriguez recorded his eighth save of the season and 302nd of his career.
Gallardo had a single and a double, and scored both times. He also had a key sacrifice bunt.
The Brewers jumped on Mets starter Shaun Marcum (1-10) for a run in the first inning. Milwaukee added two runs in the second and Lucroy made it 4-0 with a solo homer in the third.
John Buck and Marlon Byrd hit solo homers for the Mets, who never got even after the early deficit. Marcum, who went 20-11 with Milwaukee in the 2011 and 2012 seasons, allowed 11 hits and five earned runs in five innings.
REDS 13, MARINERS 4
The Reds earned only their second victory over Seattle. The Mariners are 9-2 overall in the interleague series.
Cincinnati manager Dusty Baker decided to give Izturis his ninth start at shortstop so he could get some at-bats and stay sharp. Izturis singled home a run in the second and doubled home two more in the fifth off Jeremy Bonderman (1-3).
The Reds scored more runs than in any game since a 13-7 win over Milwaukee on May 11. It was the second-most runs allowed by the Mariners, trailing a 16-9 loss to Houston on April 9.
Latos (8-2) matched his season high with four walks in six innings, but also doubled his RBI total by driving in a pair of runs with a double. He allowed six hits and fanned 11.
Kyle Seager drove in three runs off Latos with a homer and a sacrifice fly.
Copyright 2013 by The Associated Press
This story is from ESPN.com's automated news wire. Wire index
MORE MLB HEADLINES
- Sources: Halladay retiring Monday as Blue Jay
- It's unanimous: Torre, La Russa, Cox to Hall
- MLB denied A's move to San Jose in June
- Schilling replacing Hershiser in ESPN booth