CHICAGO -- Anthony Rizzo checked off another milestone as he continues to live up to the hype.
"This is the best," an elated Rizzo said. "This is something I've always dreamed of doing since I was a little kid. I've never done it before. Not in the minors, not in little league, not ever.
"This is awesome."
James Russell (5-0) worked an inning for the win. The Cubs are 12-3 in their last 15 home games, and 17-10 since Rizzo was called up in June.
The 22-year-old slugger didn't remember running around the bases or getting mobbed by teammates at the plate. He maintained his presence of mind leading up to the big hit.
"Later innings, guys press a little harder. I see a lot of veteran hitters throughout baseball always just relaxed at the plate, taking pitches and not being too aggressive," Rizzo said. "That's something I took into this at-bat.
"I'm always a little overanxious in situations like that, and took a clean swing and let the rest take care of itself."
A struggling Carlos Beltran homered off Shawn Camp with one out in the St. Louis eighth, tying it at 2. The opposite-field solo shot was his 23rd homer, but just his third in July. The All-Star is hitting .188 this month.
Cubs starter Paul Maholm allowed one run and four hits over 6 2/3 innings. He walked four and struck out five.
Maholm has allowed one run or fewer in six straight starts, becoming the first lefty in modern Cubs history to do so. He had won the previous five outings.
"He is arguably the best pitcher in the last month in all of baseball," Cubs manager Dale Sveum said. "That's the best lineup in the National League and by far the best right-handed hitting lineup in the National League, too.
"He did one heck of a job against the best."
Even with trade rumors flying around, the rebuilding Cubs have kept on winning.
"There's a reason I signed here. I've always enjoyed playing here throughout my career," Maholm said. "They gave me a chance to come in and prove that I was healthy, and I am. Hopefully we can turn this into a long-term thing. We'll see how everything unfolds and go from there."
Cardinals starter Adam Wainwright gave up two runs in six innings. He wasn't fooling anybody early, allowing six of the first nine batters to reach base.
Barney had two doubles and a single.
Wainwright settled down to retire 12 of his final 14 batters.
"No fastball control whatsoever. Luckily, I had a good breaking ball and a good cutter going," Wainwright said. "Early on we had to make some adjustments on how we were going to attack guys and try to figure out a way to make it work."
Beltran's homer got Wainwright off the hook for what could have been his first loss in 13 career appearances at Wrigley Field. Wainwright is 5-0 at the ballpark, including his 20th win in 2010 when he finished second in the NL Cy Young voting.
The Cardinals threatened several times but were largely unable to get the big hit, leaving 10 men on base.
"(Maholm) kept us off balance," Cardinals manager Mike Matheny said. "He did a nice job of pitching, mixed up everything -- used both sides of the plate, up and down. We couldn't get anything going."
Despite a throwing error that allowed Barney to score in the second, shortstop Daniel Descalso made several exceptional defensive plays, including a dazzling diving stab and throw in the third to rob Rizzo of a hit.
Cardinals SS Rafael Furcal (back tightness) missed a second straight game. Trainer Greg Hauck said he doesn't expect it to be an extended absence. ... Cardinals 1B Lance Berkman (general soreness) was also held out of the starting lineup, but he pinch-hit in the seventh, drawing a walk. He was immediately removed for a pinch-runner. ... Sveum is still undecided on his Monday starter against Pittsburgh, but said it will most likely be Justin Germano (0-1, 1.04 ERA), who was acquired from Boston on July 19. The Pirates send Erik Bedard (5-11, 4.32) to the mound for the series opener. ... St. Louis' Kyle Lohse (10-2, 2.71) will face Jeff Francis (3-2, 4.97) in the series opener at Colorado on Tuesday.