Updated

Carlos Gonzalez is feeling good once again.

That's great news for the Colorado Rockies.

Gonzalez, in his eighth game back since coming off the disabled list on Aug. 6, hit a three-run homer, Jason Hammel pitched into the seventh inning and the Rockies beat the St. Louis Cardinals 6-1 on Saturday night.

Gonzalez also doubled in a run in the ninth to help the Rockies snap a three-game slide. Colorado had dropped its last five games in St. Louis by a combined 22-3 score.

Left-hander Jaime Garcia had a rare off night at home as St. Louis fell five games behind first-place Milwaukee in the NL Central.

Gonzalez hit his 18th homer in the third inning, sending an 0-2 pitch over the wall in right. He also became the first lefty batter to connect against Garcia since Philadelphia slugger Ryan Howard accomplished the feat on July 21, 2010.

"I'm getting better, but I still have a lot to work on," Gonzalez said. "I've only been playing for a week. I'm really excited because things are going to get better.

Gonzalez went on the disabled list with a strained right wrist on July 22.

Colorado manager Jim Tracy believes Gonzalez is close to 100 percent.

"He's looking like the Carlos Gonzalez that we've been accustomed to seeing around here," Tracy said.

Gonzalez also homered in Friday night's 6-1 loss and has three homers in his last six games. He has three homers and nine RBIs since returning from the DL.

The Rockies have homered in their last six road games.

Garcia (10-6) gave up five runs and six hits in five innings, dropping to 6-3 with a 2.06 ERA in 11 home starts this season.

Hammel (7-11) allowed one run and five hits in 6 1-3 innings to earn his first win since July 29 at San Diego.

"The big difference today was I had fastball command on both sides of the plate," Hammel said. "I did some things on the side in between my previous starts. I know that I can dominate. This is a step in the right direction."

Hammel has been plagued by inconsistency this season after getting off to a 5-1 start.

"It was as aggressive a performance as he's had all year," Tracy said. "He did a great job of establishing his fastball for strikes."

St. Louis outfielder Matt Holliday, who went 0 for 3, agreed.

"He had great stuff and he didn't make a lot of mistakes," Holliday said.

David Freese drove in Holliday with a fielder's choice and Yadier Molina singled to put runners on first and second before Hammel was replaced by Josh Roenicke in the seventh.

Third baseman Chris Nelson then started an inning-ending double play with a diving catch on Ryan Theriot's line drive.

Todd Helton hit a two-run double in the fifth inning to push Colorado's lead to 5-0.

Garcia is 0-2 with a 17.28 ERA this season against the Rockies. He gave up a career-high 11 earned runs in a 15-4 loss at Colorado on May 28.

"Obviously, walks aren't the thing you want as a pitcher," Garcia said. "They came back to hurt me. All you can do is put it behind you."

Three of the four walks issued by Garcia eventually scored.

Albert Pujols, who entered the game 2 for 2 against Hammel, went 0 for 2 with a walk against the right-hander.

NOTES: Edwin Jackson (8-8, 4.07 ERA) makes his fourth start for St. Louis against Esmil Rogers (6-1, 5.85 ERA) on Sunday night. ... St. Louis OF Allen Craig is mired in an 0-for-10 slump. ... The Rockies have 33 home runs against left-handers this season, second in the NL. ... Indianapolis QB Peyton Manning stopped by to visit with Helton during batting practice. The two were former football teammates at the University of Tennessee. ... St. Louis IF Rafael Furcal extended his season-high hitting streak to eight games with a third-inning single.