DENVER -- San Francisco Giants manager Felipe Alou thought he gave a bunt signal to Deivi Cruz.
Good thing he didn't.
Cruz hit a tiebreaking triple in the ninth inning, sending San Francisco to a 3-2 victory Wednesday night over the Colorado Rockies in the lowest-scoring game at Coors Field this season.
"I don't even know if I took it off," Alou said. "I thought I had it on because I gave him the sign and I told the bench coach I hope I didn't give him the (junk) sign. He was swinging, so I guess I didn't give the bunt; I took it off."
Pedro Feliz led off the ninth with a single against Brian Fuentes (0-3), then Cruz squared around to bunt on the next pitch. After failing to get it down, he lofted a drive over right fielder Brad Hawpe's head that one-hopped the wall. Hawpe got the ball in quickly, but the relay throw was late after first baseman Todd Helton couldn't get the ball out of his glove.
The Giants had a chance at another run, but center fielder Cory Sullivan made a running catch and threw out Cruz at the plate to end the inning. Cruz got ejected for arguing the call, but the one run was all the Giants needed in what started as a tight pitching duel between Brad Hennessey and Shawn Chacon.
"This was one of those games that doesn't happen every day," Feliz said. "It was one of those days and it was a good game. Both pitchers threw a really good game."
Colorado had plenty of chances in the late innings. The Rockies put at least two on in four straight innings, starting with the fifth, but stranded eight of their 10 runners in those frames.
"It came down to us finding a key at-bat. We didn't get the hit in those situations," Rockies manager Clint Hurdle said.
Feliz hit his sixth homer and Mike Matheny his fourth for San Francisco, which ended a three-game losing streak. Hennessey pitched six-plus solid innings to keep the Giants close, Jim Brower (2-1) worked the eighth and Tyler Walker the ninth for his fourth save.
"A very nice win," Matheny said. "The pitchers did a great job for us, the bullpen guys came in and did their job. Everybody is starting to figure out what their job is."
The rookie right-hander has been solid in all three starts this season, allowing eight earned runs in 19 2/3 innings in two stints in the majors. He got off to a slow start against the Rockies, giving up Helton's run-scoring double and a bloop single by Hawpe that knocked in another run in the first inning.
Hennessey settled down after that, holding Colorado without a hit until Garrett Atkins led off the fifth with a single. Atkins was thrown out at second on a pitchout and Hennessey escaped a bases-loaded jam later in the inning by getting Preston Wilson to fly out to center.
Hennessey was pulled after giving up a two-out single to Aaron Miles in the seventh, leaving after allowing two runs and seven hits with three walks.
"What we say is you have to get him early, because after that he's a pretty tough customer," Alou said. "And they got him early. Now you know."
Chacon gave up a solo homer to Matheny in the third inning and another to Feliz on his first pitch of the seventh that tied it at 2.
But that was it. Chacon was lifted for a pinch-hitter in the seventh inning after giving up five hits and two runs, with no walks and five strikeouts.
He didn't get much help from the offense -- again. Colorado has scored 22 runs in Chacon's six starts, including just seven the past four games, which is a big reason Chacon hasn't won since April 23 despite having a team-low 3.55 ERA.
"These are tough games to lose. I'm keeping the team in games like I want to," said Chacon, 0-3 in his last three starts despite allowing nine runs in 25 2/3 innings.
Giants SS Omar Vizquel made a nice play in the sixth inning when he barehanded a high chopper by Todd Greene that took an awkward bounce. ... Colorado's Clint Barmes was 0-for-4, ending his hitting streak at 12 games. ... The previous lowest-scoring game at Coors this season was eight runs -- a 5-3 victory by Arizona on April 18.