Holliday went 2-for-4 with four RBI in his seventh career multihomer game.
"I figured I was due," said Holliday, who was 0-for-10 lifetime against Zito coming into the game. "I've had some good swings (against him), some popups that just missed."
Holliday was ready this time. Zito (3-4) left off-speed pitches to Holliday up in the first, resulting in a three-run shot to left, and in the fifth, a solo shot to right-center.
"There's no set book on Holliday," said Zito, who went six innings, giving up six runs and six hits. "You have to keep mixing it around. If you stay in the same pattern, he will adjust to it. All good hitters do that."
Francis (2-4) made tiny adjustments as he faced the Giants for the third time this season. Having lost four of his last five starts, Francis wanted to establish his command with his fastball and be aggressive.
It worked as he struck out five in his longest outing of the season. It's his first win since April 9. Francis had given up 11 runs in 12 1/3 innings in two previous starts against the Giants this season.
"I run into times where I'm trying to miss bats (instead of pitching)," he said. "I was more aggressive."
Francis retired the last 10 batters he faced before giving way to Brian Fuentes for the ninth. He didn't even realize his roll until it was mentioned to him.
"You're just trying to get everybody out so (Barry) Bonds doesn't come up again," Francis said with a smile. "That's all you're worried about."
Bonds finished 0-for-3 with a walk. Fuentes struck him out in the ninth on three straight sliders, which drew the biggest cheers of the evening. Bonds remains 10 homers shy of tying Hank Aaron's career record of 755.
"I kept throwing the same pitch and he kept swinging at it," Fuentes said. "Just like anyone else, I kept throwing it."
Zito had a rough first inning, giving up three hits and four runs. In addition to Holliday's shot, Jeff Baker added a two-out drive to right. Zito had given up only one first-inning run this season until Saturday night.
"Zito's rhythm in the first inning was (off)," manager Bruce Bochy said. "He settled down and got into a pretty good groove there."
Zito retired 10 in a row at one point before Holliday's second homer of the game, his eighth of the season.
"The second home run was more of a bad selection than a bad pitch," Zito said.
Holliday's last seven hits have all been for extra bases. He's had three homers, three doubles and a triple.
"Holliday shows up big," Rockies manager Clint Hurdle said. "We did some good things."
Willy Taveras was back in the lineup after missing the last five games with a groin injury. He went 1-for-3 with a double and scored a run for Colorado.
Todd Helton, who came into the game leading the majors with a .397 average, was 0-for-4 for the Rockies.
Standing in front of his locker after the game, his arm wrapped with ice, Francis said he felt strong enough to finish the game. But Hurdle told Francis he was coming out right when he walked into the dugout after the eighth. Francis understood the decision since he'd already thrown 118 pitches.
"I'll pitch until they take it away," Francis said.
- Giants RHP Brad Hennessey has been experiencing soreness in his right shoulder.
- Rockies INF Kaz Matsui said his back is close to fully healed. He's been out since April 15 with back spasms.
- Glenallen Hill took over as the Rockies' third base coach Saturday night in place of Mike Gallego, who missed the game for personal reasons.
- Giants OF Randy Winn's double in the fifth extended his hitting streak to a career-best 13 games.
- The game lasted 2 hours, 11 minutes, matching the Rockies' shortest game this season.