Bonds went 1-for-4 with an RBI single Tuesday night, and Pujols hit a three-run homer to help Jason Marquis win his third straight start in the St. Louis Cardinals' 8-5 victory over the San Francisco Giants.
While Bonds spent a third day stuck at 714 career homers, Pujols hit his 23rd of the season.
Randy Winn hit a two-run homer in the fifth to pull the Giants to 6-4 and move Marquis into a tie for first place in the NL for home runs allowed with 11. But San Francisco lost for only the second time in eight games.
Marquis (6-4) allowed six hits in 8 1/3 innings. He had given up two homers to Bonds in six at-bats, and the slugger entered the game 4-for-6 with two walks against the right-hander.
"I attacked the hitters with my game plan, and Bonds is the one guy you don't want to beat you in the lineup," Marquis said.
He kept Bonds in the ballpark this time and got him to ground out in the ninth before Jason Isringhausen got two outs for his 15th save in 17 chances.
"I think Marquis deserved to go out there," Cardinals manager Tony La Russa said. "He got us an out."
Pujols connected for a three-run shot to left in the first off Matt Morris (3-5), who faced his former team after spending the last nine seasons with St. Louis. Juan Encarnacion drove in three runs with a double and a two-run single as the Cardinals bounced back after losing Monday night's series opener 9-2.
"That's my job. My job is to go out there and drive in some runs," Pujols said. "I'm not going out there trying to drive the ball out of the park."
Scott Rolen had three singles, drove in a run and scored for the Cardinals.
Pujols hit his major league-leading 23rd homer in the Cardinals' 46th game, while Bonds hit his 23rd in the Giants' 44th game on May 21, 2001, on the way to hitting 73 and breaking Mark McGwire's single-season record of 70.
Bonds lined a single to right on a 3-1 pitch in the first after the fans booed Marquis for missing the plate, grounded out to second leading off the fourth inning, then hit a high flyout to right in the sixth.
Fans were on their feet when he came to the plate with one out in the first and Steve Finley on third following an RBI triple.
The boaters were out again Tuesday night hoping to take home a souvenir ball from San Francisco Bay. Kayaker Larry Ellison's timely paddling in McCovey Cove two years ago helped him retrieve both Bonds' 660th and 661st homers.
After allowing Bonds' first-inning single, Marquis retired the next 12 Giants batters before Jose Vizcaino's single in the fifth. Marquis has won his last three outings following a four-start skid.
"Tonight was probably the best start of the year for me, attacking hitters early," Marquis said. "On the whole, my mechanics felt probably as good as they have in a couple of years."
Bonds is 4-for-12 since hitting No. 713 on Saturday at Oakland against Brad Halsey, a span of 16 plate appearances. Bonds went without a home run for nine games between Nos. 713 and 714 -- 29 at-bats and 40 plate appearances.
"I don't think there was more pressure on him, but he looked more relaxed," Giants manager Felipe Alou said before the game. "The whole atmosphere here has calmed down big time."
The Giants will commemorate Bonds' next milestone homer with a tribute in his home ballpark no matter where it happens. Alou didn't rule out Bonds playing in Wednesday's day game, though the skipper seemed to be leaning toward resting the seven-time NL MVP before the Giants lost the game.
"It all depends when he gets here," Alou said. "He gets here very early. He'll tell me."
With the team off on Thursday, a day off would give Bonds two days of rest before San Francisco opens a weekend series against Colorado.
Bonds has hit three of his six home runs this season in day games, in 37 at-bats and nearly half of what he's had at night. The 41-year-old Bonds might be starting to feel the effects of starting 13 of the last 14 games. He kneeled in the outfield during a seventh-inning pitching change, though said before the game he feels good and his surgically repaired right knee is doing well.
The banners to honor him remain rolled up and waiting to be unfurled from two light towers in center field on each side of the main scoreboard.
Scott Spiezio reached base in his first three plate appearances -- a single, hit by pitch and a walk -- and scored each of those times for St. Louis.
Morris, who snapped a six-start winless stretch and four-game losing streak last Wednesday at Houston, threw 100 pitches in six innings. He allowed four earned runs and eight hits.
"It was different," Morris said of facing his former team. "I tried to block it out."
- Finley hit his major league-leading eighth triple. At 41, he tied Sam Rice as the third-oldest players to hit that many triples. Rice hit eight in 1931 at age 41. Honus Wagner had 17 at the age of 41 in 1915. Wagner also hit nine at age 42 the next year.
- One woman sported a Matheny No. 22 Cardinals uniform from his former team in tribute to the Giants' popular catcher.
- Vizcaino committed two errors at first base.