Buster Posey hit a three-run home run in the first inning to provide early run support for Barry Zito, who returned the favor by allowing just two runs in 6.2 innings to help the Giants to a 4-2 win in St. Louis.