The rookie pitcher showed on Saturday night why the Padres insisted on him being included in the Adrian Gonzalez trade with Boston in 2010.
Kelly (2-1), making his fourth major league start, kept the Rockies off balance with a mixture of fastballs and curveballs. Colorado advanced just one runner to third base against Kelly through six innings.
"You get more and more comfortable every time out there," Kelly said. "Every inning you get you feel more comfortable with the team. I think every outing is just getting more and more comfortable."
Kelly looked more like the pitcher who allowed just three hits in six scoreless inning of his major-league debut, a 3-0 win over Atlanta on Aug. 27. In his next two outings, Kelly was hammered for 13 runs -- 11 earned -- on 16 hits over just eight innings.
"He had a terrific breaking ball early," Rockies manager Jim Tracy said. "On his two-strike pitches, he did a great job of making them strikes out of his hand."
Colorado finally reached the rookie for three runs in the seventh.
Kelly allowed three runs -- two earned -- on seven hits over six-plus innings. He struck out six.
"The velocity came back today, a lot of pitches in the low 90s," Padres manager Bud Black said. "The ball had carry and he got his grounders and he got his strikeouts. "He was very efficient."
Luke Gregerson pitched a perfect ninth for his eighth save in 12 chances.
Rookie Drew Pomeranz (1-9) dropped his sixth straight decision for Colorado, which lost for the eighth time in its last 10 games.
The Rockies need to win 10 of their last 18 games to avoid tying the franchise's worst record at 67-95.
San Diego has won eight of 10 overall and 12 of 15 at Petco Park.
Guzman homered to center in the third inning off Pomeranz to give San Diego a 4-0 lead.
"A home run ball that was outside," Pomeranz said. "Sometimes it happens that way. It wasn't a bad pitch. It wasn't even in the strike zone. I don't know how he hit it so far."
Chris Nelson then doubled in one run and Charlie Blackmon had an RBI single to knock Kelly out of the game. Brad Brach came in and gave up DJ LeMahieu's sacrifice fly to cut the lead to 4-3 before getting the final two outs.
Pomeranz was pulled after three innings with his pitch count at 67. The rookie allowed four runs on four hits with three strikeouts, two walks and a wild pitch. The Rockies have employed a 75-pitch limit on their starters since just past mid-June.
San Diego scored in the second inning after a scary collision between second baseman LeMahieu and right fielder Blackmon.
With Cameron Maybin on first with a two-out single, Parrino hit a popup into shallow right field. As LeMahieu and Blackmon converged to make the catch, they rammed their shoulders full force into each other. Blackmon fell to the grass, but LeMahieu stayed on his feet and got the ball into the infield as Parrino ended up with a double.
Pomeranz has failed to finish five innings in eight of his last nine starts. ... The Padres honored longtime broadcaster Jerry Coleman with a bronze statue at Petco Park before Saturday night's game. ... There was a large star cut into the center-field grass in honor of one of Coleman's catch phrases, "You can hang a star on that." ... Rockies manager Jim Tracy said his team will modify the current 75-pitch limit on starting pitchers next season. The Rockies will move the limit to between 75 and 90-100 pitches. ... Jordan Pacheco will start his second game at catcher on Sunday for Colorado. Pacheco has started 104 previous games this season -- 80 at third base, 23 at first and one at catcher. ... When speaking about the 2013 season, San Diego manager Bud Black said, "The group that you're seeing here, position wise, will be the group you'll see coming back." ... Padres LF Carlos Quentin (sore right knee) has not started in four consecutive games. ... Rockies RHP Alex White (2-8, 5.18) faces Padres LHP Andrew Werner (2-1, 2.59) in the series finale on Sunday.