Cain pitched seven sharp innings and the resurgent Giants won again, beating the slumping Cincinnati Reds 8-0 Sunday. Omar Vizquel, Ray Durham and Shea Hillenbrand each drove in two runs as San Francisco won for the 11th time in 14 games.
Bonds went 3-for-3 and Giants pulled within two games of Cincinnati in the wild-card race and kept up its chase of Los Angeles in the NL West.
Bonds also drew his 100th walk of the season. He's batting .251 with 17 home runs and 55 RBI this year.
"He's getting hot again and he's still one of the best hitters in the game, regardless of what anybody says," Hillenbrand said. "When Bonds gets hot, the three-hole hitter sees a lot more strikes."
The Reds have lost four of five since climbing within percentage points of NL Central-leading St. Louis.
Cain (10-9) gave up four hits, struck out nine and walked two. He allowed only two runners past first base.
"I wanted to establish the zone early and I was able to do that," he said. "The offense was awesome. It takes pressure off when we score early. I could concentrate on getting my first two pitches in the zone."
Cain became the ninth rookie to win at least 10 games for San Francisco, and the first since Ryan Jensen in 2002. Cain has given up one run and 12 hits over his last 19 1-3 innings.
"He's getting better every outing," Giants manager Felipe Alou said. "Every time he throws a pitch he has some thought behind it, some strategy."
The 3-4-5 hitters were a combined 8-for-13 with five RBI. Hillenbrand, batting third, had three hits.
Bonds had nine hits in his last 20 at-bats on the homestand, including a home run, and drove in five runs.
"He's not getting pitches to hit for home runs but he is getting pitches to do what he's doing now and we need that," Alou said. "He looks pretty good there."
Hillenbrand went 8-for-16 with five RBI against the Reds, snapping an 0-for-15 stretch.
"The way he's swinging, we've see that before," Alou said. "He could carry a team for weeks. I don't believe this team is going to slow down."
Kyle Lohse (1-1) allowed five runs and 10 hits in five innings. The five runs matched the total he had given up in his other five appearances since being traded from Minnesota to the Reds on July 31.
"The main thing before I've been able to get ahead with my fastball and location," Lohse said. "That didn't happen today. They jumped on a lot of first pitch fastballs. I threw a lot of bad strikes."
In his previous outing, Lohse pitched eight shutout innings against Houston.
The Giants scored in each of the first three innings. Durham hit an RBI single in the first, Vizquel had a two-run single in the second and Durham had a sacrifice fly in the third.
Pedro Feliz doubled home a run in the fifth, matching his career high with 84 RBI. Bonds singled in a run in the sixth.
The Reds went 0-for-6 with runners in scoring position. They were 2-for-28, and hitless in their last 19 tries, during the series.
"They played a great series against us," Reds manager Jerry Narron said. "In the last three games we haven't done a whole lot. We've been in this situation before and we'll see what we're made of the next six games on the road."
Ryan Freel led off the eighth with a single and reached second on Ken Griffey Jr.'s one-out single, but reliever Kevin Correia got Edwin Encarnacion and Adam Dunn on infield pop ups.
Griffey also doubled in extending his hitting streak to 12 games.
- Bonds had at least two hits and scored two runs in the same game for the first time since June 14 in Arizona.
- Cain's 144 strikeouts rank sixth in franchise history for rookies.
- Reds RHP Gary Majewski pitched a scoreless inning in his second rehab start with Triple-A Louisville.
- Reds 1B Scott Hatteberg went 1-for-13 in the series.
- Durham is 10-for-23 with 16 RBI following an intentional walk to Bonds.
- Giants OF Moises Alou pinch-hit in the eighth, his first appearance since Aug. 20.