McDonald walked none through five innings, but ran into trouble in the sixth, when he allowed two singles and then had a third batter reach when catcher Michael McKenry got hit with a bat and called for catcher's interference.
The Bucs turned to Chris Resop, who got Nate McLouth to pop out and Alex Gonzalez to strike out to end the threat.
The Braves' only run came on a Chipper Jones solo homer in the eighth.
Tim Hudson struck out eight for Atlanta, but allowed two runs in the second after starting the inning with two straight walks, and one run in the sixth.
Joel Hanrahan picked up the save for the Bucs.
Pedro Alvarez went 1-for-3 with a walk in his first game back after returning from the minors.
For more on the Pirates, check out Bucs Dugout.