SAN FRANCISCO -- Brad Penny didn't throw a single pitch as hard as he could. San Francisco's hitters were swinging so early in the count, the St. Louis right-hander never had to.
Because of it, the Cardinals avoided being swept by the Giants for the first time in nine years and extended their lead to 2 1/2 games in the NL Central.
"It's probably the first time in my whole career I've done that," Penny said after combining with two other pitchers on a nine-hit shutout while leading St. Louis to a 2-0 win on Sunday.
"But they kind of helped me by swinging at the first and second pitch. I wasn't getting deep into counts. They're such an aggressive team that even when I went 3-1 I was throwing splitties out of the zone and they were chasing them."
Penny (3-0) gave up eight hits over 7 2/3 innings, striking out two with no walks while outpitching former teammate Matt Cain. The Cardinals' right-hander, who played for San Francisco during the second half of 2009, didn't allow a runner past second base while lowering his ERA to 0.94.
Then again, this is nothing new for the burly pitcher.
Since the start of September last season, Penny has pitched seven or more innings and allowed two runs or fewer nine times, tops in the major leagues.
"He's really going after hitters," St. Louis manager Tony LaRussa said. "He's just using a variety of stuff, no patterns. This whole series, the six [starters] all pitched well. It was a tough weekend for hitters."
St. Louis got solid efforts from left-hander Jaime Garcia on Friday and righty Adam Wainwright on Saturday but both were overshadowed by the Giants' duo of Tim Lincecum and Barry Zito, who combined to allow one run and nine hits in 15 innings.
Penny and Cain, who had adjoining lockers in San Francisco's clubhouse last season, appeared headed for a third straight pitcher's duel in the series before the Giants' impatience at the plate gave Penny the edge he needed.
"They were really aggressive, which helped me out and worked in my favor," Penny said. "If you look at the difference in the game our guys were patient and ran Matt's pitch count up and they were swinging first or second pitch."
"We're having a tough time scoring runs," San Francisco manager Bruce Bochy said. "We've been like this for six games. We've got to keep grinding. Penny threw well today ... but right now we're not clicking offensively, we know it and we need somebody to come through and get a big hit."
Pujols hit a hanging slider from Cain (0-1) into the left field stands in the first inning. The Cardinals' slugger later lined a single past Cain in the third, then drilled another line drive just over the pitcher's head in the fifth. He also grounded into a double play in the seventh.
It marked the 137th time in his career that Pujols has had three hits or more in a game. He also improved to 8 for 12 lifetime against Cain.
"The cement mixer down the middle," Cain said, referring to Pujols' home run. "I just got into a pitch count where I never gave myself a chance to get deep into the game. There aren't many times you are going to go out there and pitch five innings and get many wins. It just doesn't work that way."
The way Penny was pitching, Pujols' homer was all the offense St. Louis needed.
He held San Francisco in check all afternoon despite pitching with runners on base in every inning except the first. The right-hander, who went 4-1 with a 2.59 ERA with the Giants before signing with the Cardinals in the offseason, escaped his biggest jam in the seventh when he got pinch-hitter Aubrey Huff to ground out to second with two outs and two runners on.
Penny left after giving up a two-out single to Sandoval in the eighth, and Motte retired Bengie Molina to end the inning. Franklin, the Cardinals' All-Star closer, gave up a two-out, ground-rule double to Nate Schierholtz in the ninth but retired Torres for his sixth save in six chances.
With Huff limited to a pinch-hitter appearance and IF Juan Uribe out with an elbow strain, Sandoval is the only San Francisco player to start all 18 games this season. Uribe was in the on-deck circle in the ninth inning when Torres made the last out of the game. ... St. Louis 3B Felipe Lopez was a late scratch due to soreness in his right elbow but pinch hit for Motte in the ninth. David Freese started in Lopez's place and went 2 for 3. ... San Francisco 2B Freddy Sanchez has started playing extended spring training games and could rejoin the big league club as early as mid-May, according to Bochy. ... San Francisco hasn't swept St. Louis since June 29-July 1, 2001 at AT&T Park.