Peavy even accounted for half of San Diego's offense, scoring the Padres' first run after hitting a double in the third.
"I didn't do enough to win the game," said Peavy, who also committed an error that contributed to the Rockies' go-ahead rally.
The Padres' fifth straight loss came hours after they released struggling center fielder Jim Edmonds. San Diego (12-24) has the worst record in the majors.
Colorado's Aaron Cook (6-1) won his sixth straight start, combining with two relievers on a four-hitter. Matt Holliday homered for the defending NL champion Rockies, who won their third straight after losing 13 of 16. Atkins had three hits.
"We are starting to do things like we were earlier in the season," Holliday said. "To do them against a guy like Peavy is big. Then when you get a game like that from Aaron, it all adds up to a big win."
It was the first time the teams met since their 22-inning, 6-hour, 16-minute marathon on April 17-18, which the Rockies won 2-1.
The game was delayed 4 minutes in the third inning after a woman sitting in the field level behind first base was hit on the chin by a foul ball by Colorado's Willy Taveras. The unidentified woman held a towel against her face as she was helped out. The woman was seen by a doctor at the first aid office at Petco Park, then taken to a hospital for stitches.
Cook (6-1) held San Diego to one run and three hits in seven innings. He walked four and struck out one. Taylor Buchholz pitched a perfect eighth and Brian Fuentes pitched the ninth for his fourth save in six chances.
Kevin Kouzmanoff homered to left off Fuentes with one out.
"I'm pretty confident," Cook said. "Once you get on a roll, I think your confidence starts to grow. I have total confidence in my defense."
The Rockies scored three runs off Peavy (4-2) in the sixth, on three singles and two walks. Taveras beat out a leadoff infield single and took second on Peavy's errant throw to first. After Omar Quintanilla sacrificed Taveras to third, Peavy walked Holliday and Todd Helton to load the bases.
Atkins hit a flare past second baseman Tadahito Iguchi to score Taveras, and Hawpe's grounder between first and second brought in Holliday and Helton.
"You've got to be pretty good, especially when you're facing Aaron Cook," Peavy said. "I was trying to make that one run stand up. I guess that's the wrong way to go about it, but I was trying not to let him score, being on third base. It's not easy to do when you've got to face Holliday, Helton and Atkins."
Cook walked the first two Padres' batters in the sixth but then got Kouzmanoff to hit into a double play and retired Jody Gerut.
"He does feel like he's always just one pitch away from getting out of an inning," manager Clint Hurdle said. "He trusted himself in the bottom of the sixth. He was resilient enough to sink a pitch, get a double play, then get out of the inning."
Holliday homered off lefty Glendon Rusch leading off the eighth, his sixth.
Peavy allowed three runs and seven hits in six innings, struck out six and walked two.
Peavy scored San Diego's only run. He was credited with a ground-rule double leading off the third after a fan reached down to grab the ball in foul territory down the left-field line. The fan was ejected and Peavy scored on Brian Giles' double into the gap in left-center.
Cook has a 1.90 ERA in his last six starts. ... He's 9-3 against San Diego in 17 career appearances, including 15 starts. ... San Diego's Greg Maddux is scheduled to start Saturday night, when he'll make his fifth attempt at becoming the ninth big leaguer to win 350 games. ... CF Jody Gerut, called up from Triple-A to replace Edmonds, threw out Todd Helton at third base on Atkins' bloop single in the second.