CHICAGO -- Always and again on Sunday, Albert Pujols is the hero for the Cardinals.

Pujols' three-run homer in the top of the 10th inning finally cemented a 12-9 Cards win over the Cubs at windy Wrigley Field. It's the third straight Sunday that Pujols has gone deep, and four of his five home runs on the young season have come on Sundays.

On this occasion, though, Pujols' was just one voice in the choir of an offense that sang like it hadn't done all year. The Cardinals set new season highs for runs, base hits (17), home runs (four) and extra-base hits (seven). It was the first time this year that St. Louis won a game when its opponent scored more than two runs. Both offenses were aided by a strong wind -- 18 mph at game time -- blowing out towards the outfield.

"It's really exciting to see our team swinging the bat well," Pujols said. "We got some key hits with two outs. It was an important game. This game was real good. Hopefully, this is the game that clicks everything, and the middle of the lineup starts producing more."

Joining Pujols in the long-ball brigade were Scott Rolen, Jim Edmonds and Chris Duncan. Rolen had five hits, a career best, bringing his batting average up from a grisly .200 to a perfectly respectable .268.

"I feel like all of a sudden I'm having a decent year," Rolen said. "One game, and all of a sudden your year's not so bad anymore."

Preston Wilson opened the deciding 10th with a single. After Aaron Miles struck out, David Eckstein lined a single that caromed off third baseman Aramis Ramirez's glove. Pujols throttled an 0-1 offering from Ryan Dempster deep over the right-center field stands and onto Waveland Avenue for the game-winner.

Pujols' homer broke the game's fourth tie and quickly erased the memory of an agonizing ninth for the Redbirds. St. Louis had taken a 9-7 lead in the top of the ninth on a Rolen triple, but the Cubs scratched out two runs against Jason Isringhausen to force extra innings. Tyler Johnson and Russ Springer tag-teamed the 10th to seal the victory.

Cards-killer Michael Barrett singled off Isringhausen to lead off the bottom of the ninth, but after a lineout and a strikeout, it appeared he might be stranded on base. Alfonso Soriano slapped a pinch-double just inside the third-base line to send Barrett to third base to keep the inning alive, and Mark DeRosa dropped a bloop single between three Cardinals fielders to tie the score.

The inning might have been over before that, however. When pinch-hitter Matt Murton lined to short for the first out, Eckstein was screened and didn't throw to first because he couldn't see the base. Barrett had strayed well off the bag, and a good throw likely would have doubled him off. In that case, Ronny Cedeno's strikeout would have ended the game.

Cardinals relievers had pitched beautifully up to that point. Randy Flores retired five batters without allowing a baserunner, and Ryan Franklin pitched a scoreless eighth with one single.

"Izzy's really upset, but they all were really good," said manager Tony La Russa. "Flores came in there and was wonderful. Franklin. ... Izzy's beating himself up, and he shouldn't. He kept the ball in the park. Not too many pitchers did that today."

Rolen poked a two-run triple with no one out in the top of the ninth to give St. Louis a 9-7 lead, but the Cardinals' inability to add any more runs in the inning cost them. Rolen was left stranded at third.

Duncan drew a walk against Bob Howry to open the ninth, and Pujols followed with a single up the middle. Rolen went down the right-field line on the first pitch he saw from Howry, breaking the third tie of the game. In addition to the triple and homer, Rolen had three singles -- two of the infield variety.

"I felt more comfortable today," Rolen said. "I controlled my at-bats a little bit better today. I did get a chop hit, a ball down to the third, that got my day going."

In a back-and-forth affair, the Cubs held early leads of 2-0 and 4-2. St. Louis roared back with five runs in the fourth and fifth to take a 7-4 lead, but Ramirez's three-run homer off Adam Wainwright in the sixth tied the game and chased the Cardinals starter.

Over his 5 1/3 innings, Wainwright set career highs of both the positive and negative variety. He was touched for seven runs and 12 hits, both new personal worsts, but he also struck out a career-best seven.

Wainwright permitted two runs in the first and two more in the third, but appeared to take control in the fourth and fifth. He was touched for two singles to open the fifth, then retired the next three batters in order to protect the Cardinals' first lead of the game. But after a leadoff double in the sixth, he walked Derrek Lee on a very close 3-2 pitch, then served up Ramirez's homer.

"They had to pitch in it, too," Wainwright said when offered the excuse of a stiff wind blowing out. "The main thing for me is not giving up seven runs, it's that I had a three-run lead. I feel like I just blew a save, basically. A three-run lead in the sixth inning -- I've got to make them hit the ball on the ground there, and I didn't do it."

Still, seven runs in 5 1/3 was not much worse than par for the course. Wainwright left the game with the score tied -- and knowing his team had Pujols and Rolen. In a game that felt like a basketball shootout at times, the Cardinals were able to put things in their superstar's hands for the last shot.

"I love this," Pujols said. "That's why you play the game. That's why this game is so much fun. Because you want those situations. You want to be in that big spot when your team needs you the most."