Noah Lowry (9-6) struck out five in six innings to win his third straight start, and Ray Durham hit an RBI single. Cardinals center fielder So Taguchi did the rest _ with a costly misplay that allowed three runs to score in the fifth.
Bonds called it a night after a four-pitch walk from Troy Percival in the seventh, the slugger's 89th free pass of the season. Rookie Fred Lewis replaced him as a pinch-runner, then took Bonds' spot in left field in the bottom half.
The sellout crowd of 45,245 went after Bonds more times than the Cardinals' pitching staff, and made sure not to waste its final opportunity to boo as Bonds jogged off the field.
Bonds hit his 751st home run in the first inning Tuesday night at Cincinnati, a two-run shot off Aaron Harang. He sat out Wednesday, then had a single Thursday as the Giants lost their series to the lowly Reds.
In his first three plate appearances Friday, all against St. Louis starter Mike Maroth (0-1), Bonds never saw a pitch clocked above 81 mph. Bonds' 10-game hitting streak ended, his longest since going 11 straight games with a hit from Aug. 2-19, 2003.
He walked with one out in the third, as the soft-tossing Maroth jammed him inside with off-speed pitches.
With cameras flashing like lightning bugs from every corner of the ballpark on a pleasant night, Bonds walked on another 3-2 pitch in the fifth.
Durham had an RBI single in the first off Maroth, then the Giants added three more runs on Taguchi's error in center when he couldn't keep Bengie Molina's hard-hit ball in his glove on a tough play.
After facing pal Ken Griffey Jr. in Cincinnati, Bonds got to play opposite another of the game's great sluggers. But Albert Pujols' night was even more lackluster. He struck out in the first, grounded into a double play to end the third, struck out again in the sixth and flied out in the eighth. He has gone 20 games and 66 at-bats since hitting his 16th homer June 14 at Kansas City.