The veteran right-hander flirted with the first Pirates no-hitter since Francisco Cordova and Ricardo Rincon combined over 10 innings against the Astros on July 12, 1997.
McDonald was nearly flawless before Troy Tulowitzki's infield single with one on in the seventh. McDonald gave up one run and one hit in seven innings, striking out eight and walking three.
"I was like, 'Man, two more innings is all I needed,"' McDonald said. "You're aware of it, but are you thinking about it pitch by pitch. I'd rather have the win or the no-hitter."
Matt Reynolds (2-0) won in relief of starter Juan Nicasio. Rafael Betancourt worked the ninth for his sixth save.
Chris Resop (0-2) lost after relieving McDonald in the eighth.
Resop hit pinch-hitter Eric Young with a pitch, Marco Scutaro singled and Tyler Colvin followed with a sacrifice fly off reliever Tony Watson, and Young just beat Jose Tabata's throw to the plate.
"I don't know if I could name another guy in the league that's going to score from third base on the ball that Colvin hit," Tracy said. "There's probably a couple other guys who would try, but it's less than five I guarantee you as far as guys who would take off from third on that fly to get us the run we needed to win."
Colorado ended a six-game road trip with a 3-3 record.
"Our bats need to come to life, and we all believe that we're going to get hot and put up numbers and score a lot of runs for the pitchers," Gonzalez said. "We just need to start winning more series.
NOTES: As part of the new collective bargaining agreement, both teams were allowed to add a roster spot for the doubleheader. The Pirates recalled reliever Jared Hughes from Triple-A Indianapolis while the Rockies brought up reliever Zach Putnam. Hughes pitched a scoreless ninth for Pittsburgh in the first game then was sent to the minors in the evening. ... The Pirates are off Thursday then begin a six-game trip on Friday in Atlanta. A.J. Burnett (1-0, 0.00 ERA) will face Tommy Hanson (2-2, 3.38 ERA). ... The Rockies are also off Thursday and start a three-game set against the Mets on Friday. Drew Pomeranz (0-1, 6.75 ERA) will start for Colorado. The Mets had not announced a starter.