Buster Posey drove in three runs and the San Francisco Giants took advantage of some clunky defense by St. Louis first baseman Matt Adams, beating the Cardinals 6-4 on Wednesday night to move within one victory of the World Series.