Jake Peavy took a no-hitter into the eighth inning and the San Francisco Giants held off the Milwaukee Brewers, 3-1, in the second game of three on Saturday.