Arizona was within one out of its fourth straight win before J.J. Putz blew his second save of the season.
Leading 4-3 in the ninth inning Wednesday night, Putz got two outs after Bryce Harper's leadoff double. The Diamondbacks closer then gave up a game-ending homer to Ian Desmond that gave the Nationals a 5-4 win.
"It won't be the last time it happens to us this year," Diamondbacks manager Kirk Gibson said. "We're playing good baseball. We just have to shake this one off and come back tomorrow."
The Diamondbacks had no answer for rookie Bryce Harper, who helped the Nationals in the field, at the plate and on the bases.
He had three hits and made a tumbling barehanded catch as well as scoring his first run.
In the sixth inning, Harper fell down in the right-center gap while attempting to catch a fly ball off Jason Kubel's bat. As he landed in the grass, Harper secured the ball in his ungloved right hand.
"I was wondering if anybody saw that," Harper said. "It went underneath my glove, and I caught it with my bare hand on the back side of it."
Harper singled in the second inning for his first hit at Nationals Park. Harper hit a weak grounder to the right side of the infield. Arizona starter Joe Saunders raced off the mound and dove, his glove flying off his hand at the ball, and remained sprawled on the field for a few moments as Harper reached safely.
"It's going to be on 'Not Top 10' for a long time," Saunders said. "I'm 0-for-3 this year doing that play. . It was more of a belly flop I would say."
After being examined and tossing a couple of warmup pitches, Saunders remained in the game and threw to first to start a rundown that ended the inning with Harper caught stealing.
The Nationals snapped their own five-game losing streak and ended the three-game winning streak of the Diamondbacks.
Henry Rodriguez (1-1) struck out two in the top of the ninth to earn the win. Putz (0-2) had converted five of his first six save chances.
Harper nearly homered in the fourth inning, settling for an RBI double off the top of the wall. The next batter hit a grounder to Arizona second baseman Aaron Hill, who misfielded the ball. Although the ball didn't go far and he started the play at second base, Harper attempted to score.
Hill's throw beat Harper to the plate, but a sliding Harper knocked the ball from catcher Miguel Montero's glove to score his first major-league run.
"We couldn't' see it from where we were," Gibson said. ". If he does it intentionally, by the rule, he's out. I didn't see it. I don't think the umpire saw it as well. Maybe that's what happened."
Harper also showed off his arm, holding Jason Kubel at third base on a fourth inning flyout by throwing a bullet to the catcher. The next hitter flew out to left fielder Xavier Nady, not much deeper than Harper was, and Kubel scored.
Even Harper's seventh-inning flyout to centerfield, just short of the warning track, drew gasps.
Jayson Werth singled in the eighth inning after Upton dropped a foul ball, keeping Werth at the plate. That put two runners on base, but Craig Breslow entered the game and retired the next three batters, the final by strikeout. That also delayed Harper's fourth plate appearance to the ninth inning.
Edwin Jackson, who allowed four earned runs and eight hits in six innings, took a no-decison.
Steve Lombardozzi's third-inning double gave Washington a 1-0 lead when catch Wilson Ramos, who was running from first on the pitch, scored on the play.
Notes: Nationals third baseman Ryan Zimmerman, who's on the disabled list with an inflamed right shoulder, could return Tuesday at Pittsburgh, according to Washington manager Davey Johnson. That will depend on a Friday hitting session, but not a rehab assignment. "I'll take him cold turkey," Johnson said. . Chien-Ming Wang, who's recovering from a left hamstring strain, will throw two more rehab stints of about 75 pitches each before a decision is made on his next step, Johnson said. Johnson said he hadn't decided whether Wang will start or relieve upon his return. . Washington pitcher Stephen Strasburg won National League Pitcher of the Month for April, becoming the first National to claim honor besides Chad Cordero, who won in June 2005. Strasburg went 2-0 in five starts with a 1.13 earned-run average, a league-best 34 strikeouts and six walks. . Stephen Drew (ankle) will play three innings Thursday in a rehab assignment, Arizona manager Kirk Gibson said. . Diamondbacks pitcher Wade Miley won National League Rookie of the Month for April. He won both his starts and one of his three relief appearances, notching a 1.29 earned-run average and striking out 15 in 21 innings. "It's nice, but at the same time, I told him to keep the same hat size," Gibson said.