Craig Stammen (2-4) tossed three scoreless innings to pick up the win. He got Eric Campbell on a comebacker to the mound for the final out in the 13th after giving up a double to David Wright and intentionally walking Lucas Duda.
The NL East-leading Nationals took two of three from the Mets and head to Atlanta 4 1/2 games up on the second-place Braves, who have lost eight in a row.
Desmond drove in the first three Nationals runs off New York starter Jacob deGrom. The rookie righty, who had a 1.04 ERA while winning each of his previous five starts, was taken off the hook for the loss when the Mets rallied in the seventh.
Washington starter Jordan Zimmermann ended a New York threat in the sixth by striking out Juan Lagares with men on the corners, but departed after giving up two singles in the seventh.
Drew Storen inherited a 3-1 lead that quickly dissolved. He threw a wild pitch before serving up an Eric Young Jr. sacrifice fly. Curtis Granderson then tied the game with a two-out rocket up the middle for an RBI single.
The Nationals had opportunities to move ahead and end the game earlier, but stranded two in both the eighth and ninth innings. They also left two men on base in the 12th.
Adam LaRoche doubled twice and was knocked in two times by Desmond, who ended deGrom's homerless streak in the second.
After LaRoche opened the inning by lacing a double down the right-field line, Desmond drove a pitch over the wall in left-center field for a two-run shot.
DeGrom had gone a franchise rookie record 67 1/3 innings without allowing a home run.
The tandem of LaRoche and Desmond delivered again in the fourth. Desmond followed a LaRoche ground-rule double with a single over the glove of shortstop Wilmer Flores.