PITTSBURGH -- James McDonald doesn't consider himself a strikeout pitcher.
Funny, he's sure starting to look like one.
The Pittsburgh Pirates' right-hander extended his strong start, striking out seven in 6 1/3 innings and relying on his defense for the rest in a 3-2 victory over the Cincinnati Reds on Saturday night.
McDonald (2-1) has 25 strikeouts over his past three games and is growing into Pittsburgh's most reliable starter.
"James gave us just what we needed again tonight," Pirates manager Clint Hurdle said.
Neil Walker had two hits, including his first homer since last September, and Alex Presley added a solo shot for Pittsburgh. Joel Hanrahan worked a perfect ninth for his fifth save as the Pirates continued their weird start.
Save for a brief two-game slide in St. Louis earlier this week, Pittsburgh has alternated wins and losses since April 18. Most of the games have followed a similar script -- six have been decided by three runs or less.
"You think, let's get that one hit, something to break it open," Hurdle said. "That's not where we're living right now."
Instead, the Pirates are getting by with pitching and defense. They turned four double plays -- only one of them conventional -- and received a big boost on Jose Tabata's running grab to end the sixth that preserved a one-run lead.
"This might be one of the better games we played, and needed to play, to win the game," Hurdle said. "It was above and beyond what you normally get. Those are big-time plays. We needed every one of them."
Cincinnati starter Mike Leake (0-4) remained winless but showed improvement after a rough opening month, allowing three runs and four hits in seven innings. He walked four and struck out four.
"It's definitely a step in the right direction," said Leake, whose ERA dropped from 6.65 to 5.97. "Even though I had four walks, I was still happy with the way I threw the ball. I had a couple more mistakes than what showed, but they made me pay for two of them."
Walker hadn't homered since Sept. 4, 2011, but his two-run shot in the third gave McDonald an early cushion before Pittsburgh's bullpen staved off a late Cincinnati rally.
Though the switch-hitting Walker isn't a power hitter, he's a vital part of Pittsburgh's offense. His drought included a homerless spring training, too.
"I was looking for a pitch up and got it and was able to get the barrel on it and get it in the seats," Walker said.
Joey Votto had two hits for the Reds, but Cincinnati was undone by some slick Pittsburgh glovework and the quickly maturing McDonald.
The 27-year-old right-hander is beginning to harness his control, a problem that's plagued him early in his career and made it difficult for him to pitch deep into games.
The Reds drew within one in the eighth against Jason Grilli when Zack Cozart doubled home Devin Mesoraco. Grilli struck out Drew Stubbs and intentionally walked Votto to get to Brandon Phillips, who struck out swinging as Grilli pumped his fist.
Hanrahan retired Cincinnati in order in the ninth to blunt the Reds' momentum. Cincinnati came in 7-3 in its last 10 games to move over .500 for the first time in a month.
The Reds, however, couldn't get two games over .500 for the first time all season after running into trouble on the basepaths.
Votto ran into a double play in the fourth when Pittsburgh first baseman Casey McGehee grabbed Bruce's grounder, stepped on first and fired home, where catcher Rod Barajas blocked the plate perfectly.
Rolen had similar issues in the seventh after trying to tag up and go from first to second on a fly ball by Ludwick. Andrew McCutchen's throw from center easily beat Rolen to the bag.
"I think we hit into two (double plays) and ran into two more. There's eight outs right there," manager Dusty Baker said. "You usually don't win when you run into that many double plays."
The series concludes Sunday. Mat Latos (1-2, 5.97 ERA) starts for Cincinnati against Charlie Morton (1-2, 4.22). ... Rolen's next double will be the 506th of his career and will tie him with Babe Ruth for 48th place. ... Pittsburgh 3B Pedro Alvarez went 0 for 2 with two walks in his first game batting cleanup this season.