ST. LOUIS (AP) -- Buster Posey continued his second-half tear with a three-run homer, Barry Zito pitched 6 2-3 innings of two-run ball and the San Francisco Giants defeated the St. Louis Cardinals 4-2 Tuesday night.
Posey leads the major leagues with a .448 batting average and 30 RBIs since the All-Star break, including 12 in his last six games. Posey has an 11-game hitting streak, batting .431 (19 for 44) during the stretch
Joaquin Arias drove in the Giants' other run with an RBI double. Melky Cabrera also doubled for San Francisco, giving him a big league leading 152 hits.
Zito (9-8) allowed two solo home runs by Allen Craig. He gave up eight hits overall with four strikeouts and no walks. Jeremy Affeldt got the last four outs for his third save in four chances.
The multihomer game was the fourth of Craig's career and second of the season. He last did it July 2 against Colorado.
Cardinals starter Lance Lynn (13-5) failed in his bid to become the National League's fourth, 14-game winner, allowing four runs on eight hits with two walks and six strikeouts in six innings.
Things started poorly for Lynn as Angel Pagan and Marco Scutaro opened the game with back-to-back singles. After Cabrera grounded into a fielder's choice, Posey blasted a 417-foot homer to dead center to give the Giants a 3-0 advantage.
Craig homered with two out in the third and two out in the fifth to make it a one-run game. San Francisco made it 4-2 in the sixth on a single by Brandon Belt, a stolen base and a double by Aria to the gap in left center.
NOTES: Carlos Beltran extended his hitting streak to nine games with a first-inning double. ... Ryan Vogelsang (9-5) will face Cardinals rookie Joe Kelly (2-4) in the third game of the four-game set Wednesday. ... Pagan also walked and has been on base 14 times in last 26 plate appearances. ... Rafael Furcal went 1 for 4 and has just two hits in his last 21 at-bats. ... San Francisco has hit 51 of its 71 homers on the road, including eight on its current road trip.