ST. LOUIS -- Chris Carpenter ended his season on a strong note.
Carpenter (16-9) snapped a four-game losing streak -- during which he posted a 7.17 ERA -- with the four-hitter.
"I feel like I've gotten stronger and stronger as the year has gone on," Carpenter said. "There's no question that my stuff was better tonight than it has been all year. I was sinking the ball well and commanding both sides of the plate."
The Rockies, who were eliminated from the postseason on Tuesday, have lost 10 of 11.
"I don't like the thought of sitting here saying there's only three more days left in the season," Colorado manager Jim Tracy said. "Whatever these lows we're dealing with, we've got to get them figured out."
Carpenter, who threw just 100 pitches, retired the last 10 batters in making his major league-leading and career-best 35th start. He walked two and struck out four in the 29th complete game of his career.
"He was in great command all night long," St. Louis manager Tony La Russa said.
Pujols' RBI was his 21st game-winner, which leads the major leagues.
Gonzalez entered Thursday's play with a 13-point lead in the NL batting race over Cincinnati's Joey Votto. Gonzalez, who is hitting .338, will play Friday and Saturday, Tracy said.
This is only the second series for these clubs this season. St. Louis was swept by Colorado July 6-8 at Coors Field. They have had the Cardinals number recently, winning 11 of the last 13 meetings.
Colorado starter Jason Hammel (10-9) went just three innings, allowing five runs and eight hits. It was his shortest outing since April 26 against Arizona when he also pitched three innings.
"September has been rough," Hammel said. "It feels like I've been throwing batting practice. It's definitely not the finish I wanted."
Colorado's lone run came in the sixth when Dexter Fowler tripled and scored on a wild pitch.
Cardinals minor league SS Lainer Bueno, a member of the club's Venezuelan Summer League roster, received a 50-game suspension Thursday for testing positive for clenbuterol. The suspension is effective at the start of the next season. ... Colorado's Troy Tulowitzki, who has 15 homers and 40 RBIs in September, the most ever for a Rockie, did not drive in a run against St. Louis. He fell short of Babe Ruth's September record of 17 homers and 43 RBIs.