McDonald (9-3) collected his fourth victory in four starts, holding the Giants to one run on four hits while not issuing a walk.
The right-hander located 77 of his 106 pitches for strikes in the outing, lowering his ERA to 2.37 as the National League Central-leading Pirates won for the fifth time in six games.
Michael McKenry homered and Neil Walker contributed an RBI double for the Bucs.
Ryan Vogelsong (7-4) absorbed the loss, surrendering three runs on eight hits over seven full frames.
Ryan Theriot provided the only RBI for the Giants.