Johnson (7-7) improved to 9-1 lifetime against Washington. He fell one out short of his first complete game since April 26, 2010.
Johnson gave up one earned run and five hits. He struck out nine and walked none, and also got two hits.
Steve Cishek struck out the only batter he faced for his sixth save in nine chances.
Lee hit a two-run single with the bases loaded in the sixth against Gonzalez (13-6). Reyes opened the eighth with double and scored from second on Lee's grounder to short.
Emilio Bonifacio drove in the fifth run in the ninth with a single.
In the ninth, Michael Morse singled just past second base with two outs. Bonifacio was injured trying to field the ball and the second baseman flipped it away, allowing Bryce Harper to score the second run.
Gonzalez zipped through the first five innings, facing just one batter over the minimum, allowing just two singles.
In the sixth, the Marlins scored three runs on five singles. Johnson singled with one out and with two down, Donovan Solano singled and Reyes had an infield single. Lee put the Marlins ahead with his hit and Greg Dobbs added an RBI single.
Gonzalez worked a season-high eight innings, allowing four runs and nine hits. He struck out 10 and did not walk a batter.
In the first game, LaRoche hit an RBI single in the first and a home run in the third, then drew a bases-loaded walk in the fourth. He was hitless in the second game, ending his hitting streak at 11 games.
DeRosa, who missed nearly two months because of an oblique injury, doubled his RBI total for the season with a two-run single in the first and a bases-loaded walk in the fourth.
The Nationals scored seven runs off Brad Hand (0-1), who had been recalled from Triple-A New Orleans to start the game. Hand, 1-9 in his career, gave up six hits and six walks in 3 2-3 innings. He was scheduled to return to the minors after the game.
Lannan (2-0), who was recalled on July 21 for another doubleheader start, allowed three runs and four hits in six-plus innings. After walking five and striking out four, Lannan was sent back to Triple-A Syracuse after the game.
Tyler Clippard came in with two runners on in the ninth to earn his 22nd save in 24 chances.