ST. LOUIS -- Buster Posey shows no signs of slowing down in the second half of the season.
The San Francisco catcher stayed hot with a three-run homer, and Barry Zito pitched 6 2-3 innings to make that stand up as the Giants beat the St. Louis Cardinals 4-2 on 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. The home run stretched his hitting streak to 11 games.
Posey said he hasn't done anything differently since the break.
"I'm just trying to stay with a consistent approach," Posey said. "Have a plan when I go up to bat and keep it simple."
Joaquin Arias drove in the Giants' other run with an RBI double. Melky Cabrera also doubled for San Francisco, giving him a major league-leading 152 hits.
Posey gave the Giants all the runs they would need in the first inning. Angel Pagan and Marco Scutaro began the game with back-to-back singles, and after Cabrera hit into a fielder's choice, Posey launched a 417-foot shot to center field for his 18th home run and a 3-0 Giants advantage.
"It's always nice to get on the board early," Posey said. "I was fortunate to get something out over the plate and get the barrel on it, and it went out for me."
Zito (9-8) allowed two solo home runs by Allen Craig. Zito gave up eight hits overall with four strikeouts and no walks.
"I was going to come out here looking to be aggressive. That was my game plan," Zito said. "When we went up three in the first, it's even more important to come out throwing strikes."
San Francisco manager Bruce Bochy appreciated Zito's effort.
"He pitched a great game," Bochy said. "He gave up a couple of home runs to a good hitter, but he didn't let that faze him at all."
Jeremy Affeldt got the last four outs for his third save in four chances.
Cardinals starter Lance Lynn (13-5) allowed four runs and eight hits with two walks and six strikeouts in six innings.
"He had to fight all night," Cardinals manager Mike Matheny said. "It didn't come easy for him. (He had) a little trouble putting guys away and it ended up costing him in the first."
After that first inning, Lynn settled down but it was too late.
"One pitch cost me the game," Lynn said. "I wasn't trying to give him anything to hit there. It was just a bad pitch."
NOTES: Carlos Beltran extended his hitting streak to nine games with a first-inning double. ... Ryan Vogelsong (9-5) will face Cardinals rookie Joe Kelly (2-4) in the third game of the four-game set on Wednesday. ... Pagan, who also had a walk, has been on base 14 times in his last 25 plate appearances. ... San Francisco has hit 51 of its 71 homers on the road (72 percent), including eight on its current road trip.