Brian McCann and Jordan Schafer also drove in runs as the Braves snapped a three-game skid. Atlanta has not won the division since 2005, the last of 11 consecutive titles. Washington entered 4½ games behind Cincinnati for the second NL wild card.
Kameron Loe (1-2) got one out for the win. Craig Kimbrel, Atlanta’s seventh pitcher, rebounded from his loss Tuesday to record his 48th save.
Ross Ohlendorf (4-1) allowed three runs over six innings. The right-hander, making his second start in place of Stephen Strasburg, retired 10 in a row to start the game.
As he was being replaced in the fifth inning, Atlanta starter Alex Wood was ejected for shouting and pointing at home plate umpire CB Bucknor. Wood was upset with Bucknor’s ball-four call with the bases loaded earlier in the inning.
With Atlanta trailing 2-0 in the sixth, Uggla led off with his 22nd homer. Schafer then bunted and went all the way to third when Ohlendorf’s throw to first sailed down the right-field line.
Ohlendorf got two outs, but Upton hit the first pitch he saw over the wall in left-center to put Atlanta ahead 3-2. It was Upton’s 23rd home run.
The Braves added runs in the seventh on McCann’s RBI double and in the ninth on Schafer’s RBI single.
The Nationals took the lead in the fifth. Anthony Rendon singled and Ohlendorf bunted him to second. Span then hit a bouncer to first that Freddie Freeman bobbled for an error.
After Ryan Zimmerman walked to load the bases, Jayson Werth walked on a 3-2 pitch to force in the game’s first run.
Wood slammed his pitching hand into his glove as he came down off the mound and began yelling at Bucknor. Third baseman Chris Johnson attempted to calm Wood, while manager Fredi Gonzalez came out to argue and was ejected by Bucknor.
When play resumed, Bryce Harper hit a sacrifice fly, scoring Span.
Atlanta bench coach Carlos Tosca came out to remove Wood, who shouted and pointed at Bucknor on his way to the dugout.