ST. LOUIS -- Adam Wainwright made the Pittsburgh Pirates try to beat him one base at a time.
Wainwright came up with enough clutch pitches to offset nine singles in 5 1/3 innings, and contributed a two-run double that helped the St. Louis Cardinals end a five-game losing streak with a 9-4 victory Tuesday night.
"That's probably the biggest key to the game, all the potential they had to break those innings open," manager Tony La Russa said. "I told him I like those 1-2-3 innings better than those gut-wrenchers."
A lot of gut-wrenching for the Pirates.
"That's a lot of opportunities that got away," manager Jim Tracy said. "We couldn't get the big hit, and the game completely flipped as a result."
Chris Duncan's three-run homer in the sixth, the team's major league-low fifth this month and their first at home since April 28, put the game away for a team that limped home from a 2-7 trip and in last place in the NL Central.
David Eckstein had three singles in the leadoff spot after three weeks batting eighth, Yadier Molina extended his hitting streak to 14 games and Aaron Miles had three hits and an RBI.
"I felt good tonight," Eckstein said. "The most important thing is we got the W."
The Cardinals, who trail the majors in runs, knocked out Zach Duke (1-5) in the fifth. Duke allowed six runs, five earned, on 11 hits and is 0-5 in eight starts since his lone victory on April 8 at Cincinnati.
"I threw too many hittable pitches, not good pitches at all," Duke said. "That's not acceptable. You know, I'm pretty upset with myself."
The Pirates missed a chance to take a big early lead, getting only one run out of six singles and a walk in the first two innings, Xavier Nady's run-scoring single in the first, while leaving the bases loaded each time. Pittsburgh needed three more singles and Jason Bay's sacrifice fly to score their second run in the fourth, this time leaving two men on.
With the bases loaded, the Pirates were 1-for-9 with five strikeouts.
"I tried to avoid the big inning," Wainwright said. "As many hits as they got off me tonight, it could have been a lot worse. I'm starting to get back to my old self."
Duke had two hits, matching his season total after a 2-for-16 start at the plate. He singled and scored in the fourth.
Wainwright (4-3) allowed two runs and nine hits in 5 1/3 innings, and struck out six. It was a bit of a bounceback for the right-hander, who has complained of fatigue and elbow tendinitis during his conversion to the rotation and didn't make it out of the third in his last start at Los Angeles.
Wainwright's two-run double off the base of the wall to straightaway center gave the Cardinals a 2-1 lead in the second. Scott Rolen had a sacrifice fly in the third and St. Louis scored two more in the fifth despite getting two players thrown out at the plate.
Right fielder Ryan Doumit caught Eckstein trying to score on Albert Pujols' shallow fly ball for a double play and Molina was an easy out at the plate after Jim Edmonds was stuck halfway to third on Miles' two-out RBI single.
Juan Encarnacion had a run-scoring single and Edmonds drew a bases-loaded, full-count walk in the fifth for a 6-2 lead. Duncan has hit four of the Cardinals' five homers this month, and his team-leading eighth of the season came off Shawn Chacon in the sixth for a 9-2 lead.
The homer drought spanned the Cardinals' last six-game homestand, their longest of that length without one since 1986.
Earlier in the day, Pirates manager Jim Tracy elevated Chacon to the rotation and the right-hander will take the place of struggling Tony Armas on Saturday in Cincinnati. Chacon worked two innings, allowing three runs on three hits with a strikeout.
Armas, who has made 158 career starts, appeared in relief for the first time in the eighth.
The Cardinals are 37-17 against the Pirates the last four seasons, including 4-2 this year. ... The St. Louis franchise low for May dating to 1973, according to SABR, is seven in 1991 and 1986. ... Molina is 17-for-51 (.333) during his hitting streak, which has raised his batting average 45 points to .295.