Chicago Cubs' Alfonso Soriano, right, receives a high-five from Marlon Byrd after Soriano's solo home run against the San Francisco Giants during the second inning.
Alfonso Soriano drove in two runs and hit one of the longest homers at AT&T Park, leading the Chicago Cubs to a 5-2 win over the San Francisco Giants on Tuesday night.
Geovany Soto added a two-run double and Darwin Barney also drove in a run for the Cubs, who won their second straight.
Jeff Keppinger had three hits and drove in two runs for the Giants, who lost their third in a row to fall a season-high six games behind Arizona, which beat Colorado 9-4, in the NL West.
Matt Garza (7-10) lasted 6 2-3 innings in his first appearance against the Giants. He allowed two runs on nine hits, walking one and striking out six. Carlos Marmol pitched the ninth for his 31st save in 39 chances.
Ryan Vogelsong (10-5) lost his third straight start in his shortest outing since May 3. He gave up three runs on seven hits over five innings, walking two and striking out three.
Sean Marshall recorded his 29th hold -- on his 29th birthday -- and is one shy from matching Marmol's club record in 2008.
The stagnant Giants failed to score more than three runs for the sixth consecutive contest and have scored two or fewer in 24 of their last 44 games since the All-Star break.
Carlos Beltran, acquired in a trade from the New York Mets in an attempt to bolster the offense, was 0 for 4, ending the third, fifth and seventh innings with a pair of runners on each time.
Soriano's second-inning solo shot traveled an estimated 445 feet, bouncing onto the concourse above the left-field bleachers. Only Andres Galarraga has hit one further to left field, an estimated 475 feet on Sept. 18, 2001 off Roy Oswalt.
Barney and Soriano each drove in runs in the third to make it a 3-0 Cubs lead.
After Keppinger doubled home a run in the fifth to pull the Giants to 3-1, the Cubs added two more on Soto's ground rule double with the bases loaded. Only fan interference prevented the Cubs from tacking on another run.
Keppinger's double was the Giants' ninth extra-base hit in the first eight games of the homestand. He added an RBI single in the seventh.
The Giants are 10-21 since leading the Diamondbacks by four games in the division after play on July 28.