Luis Rodriguez singled in the winning run in the ninth as the Padres handed the Rockies a costly loss in their playoff chase.
"It's just been one of those years," said Peavy, the 2007 NL Cy Young Award winner. "I feel like I've thrown the ball fairly well. But, of course, the bottom line is 9-9. It's not fun to be a .500 pitcher in the win-loss column.
"But I can't control wins and losses. I can only control any of the other numbers and I think they are comparable to what I've done in all the good years I've had."
Peavy limited Colorado to five singles and walked two, throwing 114 pitches. He lowered his ERA to 2.69, second-best in the NL to San Francisco's Tim Lincecum (2.43).
"It's a big letdown when you think you are going to win, you're one out away from winning and you don't win," Peavy said. "For the team to come right back and score like that, it's huge."
Hoffman (3-6), the career leader with 551 saves, surrendered a pinch-hit RBI single to Chris Iannetta that tied it at 1. It was his fourth blown save of the year.
"I was looking for that pitch," said Rodriguez, who also drove in Peavy with a two-out double in the fifth. "He doesn't want to throw me a good fastball."
Colorado, which has 24 games left this season, started the day six games back of Arizona in the lackluster NL West. The Diamondbacks hosted the Los Angeles Dodgers on Sunday night.
San Diego (53-83), with the second-worst record in the NL, swept Arizona in a three-game series before taking two of three from the Rockies.
"Every loss is difficult, but you run out of games and they have more meaning," Colorado manager Clint Hurdle said. "It's hard because your starting pitcher went out there and battled a guy with probably more electricity."
Jeff Francis kept the Rockies in the game with seven strong innings, allowing one run and six hits.
But Peavy was tough as he reached double digits in strikeouts for the 27th time in his career and third time this season.
"It was like I came off the field and I am going right back out again," Francis said. "[Peavy] was having 1-2-3 innings. He was fantastic."
Peavy, who retired 13 straight batters at one point, did not allow an earned run in a home start for the fifth time this season and has limited the opponent to two earned runs or less in 11 home starts.
Colorado had a few scoring chances against Peavy, but went 0-for-4 with runners in scoring position. The best scoring opportunity came in the first when Scott Podsednik drew a leadoff walk and stole second with one out. But Peavy struck out Matt Holliday and Brad Hawpe.
Peavy's 13 Ks also tied the major league single-game high this season, done eight times previously.
Peavy was originally scheduled to start on Saturday but was pushed back one day after throwing 121 pitches in his last start. He was pushed back one day to give him extra rest three times in August.
The right-hander lowered his major league-best home ERA to 1.40. Peavy also leads the majors with a 1.44 ERA in day games.
Peavy's 13 strikeouts were his highest total since he struck out a team-record 16 on April 27, 2007. ... Francis has allowed one run in 14 innings this season against San Diego. ... Padres RHP Chris Young will be activated off the 15-day disabled list (strained right forearm) on Monday to make the start when San Diego opens a three-game series at the Los Angeles Dodgers.