The Mets blew three leads late in the game, letting the Nationals come back to tie the contest in the eighth and 10th innings, and then squandering a 6-5 lead in the 12th.
The Nationals came right back in the bottom of the frame, however, when shortstop Jordany Valdespin's error allowed Ryan Zimmerman to come home with the tying run.
Hairston's homer in the top of the 12th off Ross Detwiler (4-3) put the Mets ahead again, 6-5, but Desmond's double down the left-line off Elvin Ramirez (0-1) in the next half-inning scored Michael Morse, knotting the contest once again.
Harper finally gave the Nationals the victory two outs later with an RBI single.
Desmond finished with three RBI for National League East-leading Washington.
Valdespin and David Wright homered for the Mets, who dropped the opener of a three-game series.