SEATTLE -- Jamie Moyer said it had to be a mistake. The Safeco Field scoreboard radar gun showed an improbable 89 mph when Moyer struck out Barry Bonds in the sixth inning.
"I can't throw a fastball 89. You think I can throw a cut fastball 89?" Moyer said. "Must have been Barry's bat speed."
Moyer (4-6) allowed a Jason Ellison home run leading off the game and then just five singles. He walked none and struck out four -- including Bonds twice -- in his 500th career start.
"At this rate, he'll go 500 more, the way he's out there throwing 83-, 84-mile-per-hour heaters and making guys look foolish," second baseman Willie Bloomquist said. "Playing behind him, you just scratch your head."
Adrian Beltre homered and singled in another run for the Mariners, who held Bonds homerless in 10 plate appearances following his home run Friday night. The slugger remained 37 home runs behind Hank Aaron's major league record.
Bonds, who turns 42 next month, went 0-for-3 against the 43-year-old Moyer.
Bonds has five home runs in 35 at-bats against Moyer, whom he called a "pretty good friend." The first was Bonds' 11th career homer in 1986, when Bonds was a rookie with the Pittsburgh Pirates and Moyer was a rookie with the Chicago Cubs.
Moyer retired Bonds on three called strikes to end the first inning Sunday. The third was a 76-mph floater that Bonds said he thought was outside. Bonds gave a side look to home plate umpire John Hirschbeck before pivoting on his back heel and returning to the dugout.
Catcher Kenji Johjima said Hirschbeck helped Moyer with a generous strike zone, especially low, "so we expanded that area for strikes."
Bonds flied to left field on the first pitch he saw in the fourth.
"He did me a favor by swinging at that first pitch," Moyer said.
In the sixth, Bonds fouled off two pitches. Moyer then shook off Johjima's sign for an outside pitch and threw a sinking fastball inside. Bonds swung through it for another strikeout, prompting roars from a second consecutive sellout crowd of 45,216.
"He gave me some pitches to try and hit to the upper deck," Bonds said. "But he won."
As for the radar gun reading, Seattle manager Mike Hargrove joked of Moyer, "If he throws 89, he's going to have to take a urine test."
Giants starter Jamey Wright (5-7) helped give the Mariners the lead in the third inning. Bloomquist singled, advanced to second on a sacrifice and stole third base. With two outs, Beltre broke his bat on a grounder to the left of the mound. Shortstop Omar Vizquel was gliding into position when Wright kicked his right leg at the ball and deflected it past Vizquel into the outfield to score Bloomquist.
"Omar wasn't where he was supposed to be. He was supposed to be where I deflected it to," Wright joked.
Then Wright threw away a pickoff attempt of Beltre at first base. The error advanced Beltre into position to score the go-ahead run on Raul Ibanez's single. Carl Everett added an RBI single to make it 3-1.
Beltre led off the fifth with his sixth home run and Ichiro Suzuki had an RBI single in the eighth. Suzuki went 2-for-4 to extend his hitting streak to 18 games, tying his AL-best streak this season.
Wright left after he loaded the bases on walks in the seventh. He allowed eight hits, walked four and struck out four over 6 2/3 innings for his fifth straight winless start.
Bonds struck out a third time in the ninth, against closer J.J. Putz. ... Giants OF Moises Alou was scratched from the lineup just before the first pitch after waking up with back spasms. "I can't bend over," Alou said. Manager Felipe Alou said he wants to rest his 39-year-old son for Monday's home game against the Los Angeles Angels. ... Mariners 2B Jose Lopez sat out for the first time since May 27 and for the third time in 71 games. He jammed his left thumb sliding into first base on a groundout Saturday. He said he's never slid headfirst into first base before. "Never will again," Lopez said. Lopez expects to play Tuesday at the Los Angeles Dodgers.