McDonald pitched eight scoreless innings, allowing five hits, while walking one and striking out five. He retired his last 12 batters.
Cincinnati was 0-for-7 with runners in scoring position against McDonald. The one run didn't come until Chris Heisey's RBI single with two outs in the ninth against reliever Tony Watson.
Winners in eight of their last nine games entering the day, the Reds hit 20 home runs in that stretch and used the long ball to score 31 of their 47 runs.
That trend hit a brick wall in McDonald, who has surrendered just two homers in 65 1/3 innings in 2012.
"He's got good stuff, but he's got the right amount of wildness to him," Heisey said. "He's got good enough stuff that it keeps you off balance. You can sit on a pitch or location because he doesn't hit his spots perfectly but has good enough stuff to get away with that. It's to his advantage almost."
Reds starter Bronson Arroyo lasted only four innings, giving up four runs and eight hits, with one walk and one strikeout.
Following a stretch of six straight quality starts, Reds starters have been hit hard in the last four games, with three of the last four pitchers not completing five innings.
"Bronson had a rough day," Baker said. "He didn't really have an out pitch today. Nothing was really working, nothing was really sharp. He was kind of up in the zone."
Arroyo wasn't strong, but he was also unfortunate in many ways. All of Pittsburgh's runs in the game came on two-out hits. The Pirates entered the day ranked 16th out of 16 clubs with a .219 team batting average.
In a three-hit bottom of the first, Neil Walker scored on a Pedro Alvarez two-out RBI double to left field. Alvarez came home when Garrett Jones rolled a single into right field.
In the second, after a two-out walk issued to Jose Tabata, Walker returned with an RBI double to right field. Alvarez started the third inning with a double and scored on a two-out single from Rod Barajas that made it a 4-0 game.
"I didn't have a whole lot today," Arroyo said. "That being said, I still felt like I put myself into position to get out of some of those innings and maybe give up only one or two runs."
After Arroyo was replaced by Alfredo Simon in the fifth inning, Alvarez made a bid for his third double but was thwarted by Drew Stubbs' leaping, snowcone catch, which was disputed by Pirates manager Clint Hurdle, who thought the ball may have been trapped against the wall. Simon got out of the inning with no damage, and went on to pitch three scoreless innings, with three strikeouts. He has allowed only one earned run over his last 17 1/3 innings.
The Reds had a few opportunities to score but couldn't come through. The best chance came in the top of the third inning, when Ryan Hanigan led off with a double and Arroyo drew a four-pitch walk from McDonald.
Stubbs attempted a bunt that backfired badly as it was tapped hard toward the mound, where McDonald made a fielder's-choice throw to third base. Wilson Valdez was called out on strikes and Joey Votto flied out.
"Huge," Hurdle said of that escape. "That team can turn on you dynamically, and can turn on you in a hurry. He made some key pitches and took it from there."
Back-to-back singles by Miguel Cairo and Hanigan to start the fifth gave the Reds runners on first and second before Mike Costanzo popped out, Stubbs struck out and Valdez grounded out to end the threat.
"I definitely didn't have the greatest of stuff today, but that happens probably 10-12 times a year," said Arroyo, who is 2-3 with a 3.59 ERA in 10 starts. "You still feel like you can find a way to win if you keep it close and put some pressure on them. We just couldn't do that today."