SAN FRANCISCO -- Matt Cain looked up at the scoreboard after three innings and noticed his pitch count had already reached the 60s. San Francisco's right-hander had no intention of slowing down, not with his first win of the season so close.
"It felt good obviously to start this month off a little different than last month," said Cain, who was winless in his first four starts before shutting down the Rockies. "Guys got runs early and that was huge, to be able to get three or four runs early and get into a mode where you can throw a lot of strikes and not be too worried pitch to pitch."
Cain (1-1) threw 123 pitches -- his most since 125 against Florida on Aug. 20, 2008 -- and left to a standing ovation after the eighth. He struck out eight and walked three, allowing only a fourth-inning double to Troy Tulowitzki. Cain also had a two-out bunt single in the sixth.
Cain labored at times and had to pitch out of a two-on, none-out jam in the second but settled down and retired 15 straight batters after giving up Tulowitzki's leadoff hit in the fourth to win for the first time since Sept. 27.
"We've had a tough time getting him some runs or the big hit and today we did it," Giants manager Bruce Bochy said. "He threw a lot of pitches early but settled down and had some nice, efficient innings. His count got up there pretty good but he's a strong guy."
Esmil Rogers (0-1) took the loss after being called up from Triple-A Colorado Springs. The 24-year-old right-hander, the only rookie to make the Rockies' opening day roster, had been in the minors since April 16, when he was sent down to make room for pitcher Joe Beimel.
Colorado certainly didn't help its young pitcher. The Rockies, who struggled against left-hander Barry Zito on Friday, barely avoided being shut out and have scored only nine runs in their last four road games.
"We only had three hits and two of them came in the ninth. How can you paint a rosy picture?" manager Jim Tracy said. "We're trying way too hard to hit the ball out of the park. When you do that, you pull off the ball and bad things start to happen."
Rogers got himself in trouble early, walking Molina leading off the second then giving up a single to Huff. One batter later, Uribe homered to left-center to make it 3-0.
It got even uglier for Colorado after that.
After Nate Schierholtz walked, Cain laid down a sacrifice bunt and reached base safely when Rockies second baseman Eric Young dropped the casual throw from catcher Miguel Olivo for an error. Schierholtz scored on John Bowker's sacrifice fly.
Molina homered leading off the third to make it 5-0. Rogers was gone an inning later.
Huff went 3 for 4, his second straight multihit game after a monthlong slump with his new team. He also homered into McCovey Cove in the eighth, the 51st splash hit by a Giants player at the waterfront ballpark, after Bochy dropped him from the cleanup spot in the batting order to fifth.
"It's definitely a coincidence," Huff said. "I just happened to pick it up a notch yesterday."
Colorado 3B Ian Stewart was ejected by plate umpire Tim Timmons in the seventh after being called out on strikes. It was the first time he'd been ejected. ... Rockies RHP Jason Hammel (strained right groin) played long toss for a second straight day and might throw a bullpen session Sunday. ... Giants SS Edgar Renteria (groin) will miss the rest of the series after hurting his groin early in Friday's game. ... CF Aaron Rowand will come off the disabled list and start Sunday for San Francisco. He's been out with a broken cheekbone and concussion after getting hit by a pitch from Vicente Padilla of the Dodgers on April 16. ... To clear room for Rogers, the Rockies designated RHP Juan Rincon for assignment.