MIAMI -- The Florida Marlins' ballpark was lively for a change Friday night, with fans turning out to see baseball's new home-run king.
Then the San Francisco Giants' other Barry stole the show.
Barry Bonds went 1-for-3 with a single, a walk and a strikeout. His first game in Miami this year provided a box-office boost for the Marlins, who are last in the NL in attendance.
The announced crowd was 25,079, but Zito (9-11) gave fans little to cheer about. He walked two and matched a season high with eight strikeouts, and the Giants' weary bullpen did the rest to complete a two-hitter.
It was one of the best performances this season by Zito, who joined the Giants when he signed a $126 million, seven-year contract in December. The former American League Cy Young Award winner had a 6.68 ERA and a 2-6 record over his past 12 starts.
"What a job he did," manager Bruce Bochy said. "All of his pitches were crisper. ... It has to be tough being in his position, with the expectations. I think he's dealing with it as well as you can."
Zito lowered his ERA to 4.88.
"I've got seven or eight starts left," the left-hander said. "There's definitely still some time to be myself. I just need to throw more consistent outings."
Brian Wilson pitched a hitless eighth, and Brad Hennessey pitched around a leadoff single in the ninth for his 10th save in 12 chances. With a runner on second, right fielder Randy Winn made a diving catch of Mike Jacobs' liner to end the game.
Davis homered for a 3-0 lead in the seventh after Zito reached on an error by second baseman Dan Uggla. The homer came in the rookie's 61st major-league game.
"I'm going to treat it like it's the first of many," Davis said. He has hit in all 12 starts since the Giants acquired him July 31 from Pittsburgh.
Scott Olsen (9-10) lost despite pitching well for the third start in a row. He allowed three runs, two earned, in seven innings.
"Ollie pitched great," Marlins manager Fredi Gonzalez said. "Zito pitched better -- a lot better. That's the Zito that has won a lot of hardware over in the American League."
Florida reached Zito for six runs in four innings three weeks ago.
"His 86-mph fastball was a lot different than the 86 mph we saw in San Francisco last time we faced him," Gonzalez said. "It had some life to it. I kept looking at the radar guns. I thought it was up in the 90s."
NL batting leader Hanley Ramirez went 0-for-3 with a walk, all against Zito. That ended Ramirez's career-best hitting streak at 13 games.
"He's a great hitter," Zito said. "Obviously he's doing special things this year. You've just got to mix with guys like that. There's really no set pattern, and no set holes for guys like that. You basically have to keep changing their eyes."
All eyes were on Bonds early, and he was greeted with more cheers than jeers when he stepped to the plate in the first. He doffed his helmet, then grounded out to end the inning.
All of Bonds' at-bats came in a lefty-versus-lefty matchup against Olsen.
"There's no reason not to challenge him," Olsen said. "He's a hitter just like everybody else. You can't be passive. You've got to be aggressive and go after guys."
Zito took the same approach, consistently getting ahead in the count. He threw 80 pitches before he gave up a double to Cody Ross.
"I'm sure he's not happy with the year he's having," Ross said. "But still, when he's got his good stuff, he's as tough to hit as anybody in the league."
Zito left the game after throwing 116 pitches on an 86-degree night. He said he realized only after departing that he had allowed a single hit.
"It has been a year where I can't be trying to go out there and throw no-hitters," he said.
- Bonds fouled a ball into the second row behind the backstop in the sixth inning, and Marlins owner Jeffrey Loria came up with it -- but not on the fly.
- Aurilia, activated from the DL before the game, went 0-for-3 with a walk.