CHICAGO -- Alfonso Soriano's warming up, even if the weather isn't. He looked like his old self Saturday and hopes he's put his season-long struggles behind him.
"I feel very comfortable now at home plate. My hands stayed back a little more now and I wait for the ball," Soriano said. "I'm glad I have a big day, more important that we won this game."
Soriano's 4-for-5 performance raised his average from .191 to .223. And slowed earlier this season by a calf injury that landed him the on the disabled list, he twice raced home and scored with good slides to send the largest crowd of the season at Wrigley Field (41,597) into a tizzy.
"It happened twice today. I don't like close plays because the catchers are very strong. I think I got safe on both plays," he said.
Kosuke Fukudome's first homer since opening day capped the seventh-inning rally as the Cubs won their second straight against the team that swept them in the first round of the playoffs last October.
After a strong performance by Diamondbacks' rookie Max Scherzer, the Cubs trailed 2-1 headed into the seventh when they got to Arizona reliever Chad Qualls (0-4), whose ERA jumped from 0.93 to 2.75 when he gave up four runs and four hits in one-third of an inning.
It was especially disappointing for Qualls after the way Scherzer pitched in just his second major league start.
"It's unbelievable to come out here in Wrigley Field and the environment and do as good as he did," Qualls said, adding he made one bad pitch to Soriano.
"I threw a bunch of good pitches to Soriano. The one mistake I made on him, he hit into the gap."
Pinch-runner Jason Marquis moved to second on a wild pitch and scored on Soriano's double to left center that made it 3-2. When Ryan Theriot singled up the middle, Soriano -- obviously not at full speed -- was still sent home and slid under catcher Chris Snyder after a strong throw from center fielder Chris Young.
"I was a little scared because it is a little cold and I used my legs a lot today," Soriano said of the 47-degree day. "I have to play a little more and be comfortable with my leg."
In the third, Soriano scored from first after a soft single to right by Theriot. When Diamondbacks' right fielder Justin Upton fumbled the ball for an error and then threw it in to second baseman Augie Ojeda, Soriano broke for home and scored when Snyder couldn't hang on to Ojeda's throw.
Scherzer allowed five hits and an unearned run in six innings. The Diamondbacks' first-round pick in the 2006 draft struck out six, walked one and hit two batters with pitches.
"That's one of the reasons we felt like he was ready for the major leagues. The game doesn't speed up for him," Arizona manager Bob Melvin said. "He's a confident kid and is confident in his stuff and a base runner or two doesn't affect him."
The Diamondbacks made several nice throws during the game that did catch runners at the plate.
Upton atoned for his earlier error when he caught Derrek Lee's bases-loaded fly ball in the fifth and unleashed a perfect peg to Snyder to easily get Johnson coming home from third.
The Cubs also had a run cut down in the second inning when Ramirez hesitated momentarily off third and then tried to score on Geovany Soto's grounder to second, but was out on a throw from Ojeda.
Arizona, the highest scoring team in the majors managed only one run Friday. On Saturday, they got two in the sixth, thanks to a pair of walks. The Diamondbacks had just four hits.
Ojeda and Stephen Drew opened with singles and one out later, Conor Jackson walked to load the bases. Dempster then walked Upton to force in the tying run before Mark Reynolds hit an RBI grounder to deep short for a 2-1 lead.
- Ward was 0-for-14 with six walks as a pinch-hitter this season before his seventh-inning single.
- Arizona 2B Orlando Hudson sat out his fourth straight game with a sore hamstring.
- Eric Byrnes, batting just .225, got the day off for the Diamondbacks.
- It'll be Big Z vs. the Big Unit on Sunday when Carlos Zambrano faces Randy Johnson in a marquee matchup for the series finale.