Buster Posey followed Brandon Belt's leadoff triple in the sixth with a go-ahead double, Jake Peavy won for the second time in six starts, and the Giants beat the Cubs 4-2 on Wednesday night to stop Chicago's six-game winning streak.