The right-hander also was a force offensively as he accounted for the game's only run through six innings with an RBI single in the second.
The trouble for the D-backs was that Ubaldo Jimenez was nearly as good.
After allowing four hits and one run in the first two innings, Jimenez retired the D-backs in order in the third through sixth innings.
"He's got unbelievable stuff," Haren said. "The guy's got some of the best stuff in baseball, and once the guy puts everything together, he's going to be pretty special. I tip my cap to him. He's having a really good year, a coming-out year for him and he just got the better of me."
The Rockies finally broke through against Haren in the seventh as they scored three runs on four hits to go up, 3-1.
Yorvit Torrealba and Ian Stewart had RBI singles during the inning and Clint Barmes capped the scoring by laying down a successful suicide squeeze.
"They beat our best and they did it methodically," Hinch said. "I think when he was on the ropes they executed, they got multiple hits in a row, they made him work hard, they hit every mistake."
Ryan Roberts led off the Arizona half of the seventh with a single and moved to second on Brandon Allen's groundout. Hinch then elected to let Haren hit for himself.
"I considered it," Hinch said of pinch-hitting in that situation. "But he's probably our most competitive guy. One, he swings the bat pretty well, too. He had a chance to finish that game. I felt at that time in the seventh with one runner on, it was equally as good an opportunity to get a hit or for him to continue to get six more outs, which is what we needed."
Said Haren, "I felt pretty good. It's the end of the road here, so I don't have nearly as much in the tank as I did back in April, but I still felt good enough to go back out."
Haren grounded out and Jimenez was able to work out of the inning, his final of the game, without any damage.
"Jiminez is nasty," Hinch said. "He's one of the best in our division. He was running it up there in the upper 90s. He threw a lot of offspeed pitches when he would get into trouble and when he was ahead and we had a hard time reacting to it. We had him at the end, he's tiring, his pitches are up to 120 and we just couldn't push through an extra run."
The Rockies, though, did pick up an extra run, two of them in fact, in the eighth.
Carlos Gonzalez led off the inning with a walk, and with one out, moved to second on a wild pitch and was thrown out trying to steal third. But before Haren could get that final out, Troy Tulowitzki reached on an infield single and scored when Jason Giambi followed with a home run, his second in two days.
"They put together much better at-bats as the game went on," Haren said. "I had decent stuff and they just fought me all the way along right to the end. I gave it my best, but it just wasn't enough today."