WASHINGTON -- Dan Haren's season-long struggles have hampered the Nationals. His latest outing was something different. He's got the win to prove it.
Haren (5-11) pitched seven innings, allowing one run and three hits.
"How 'bout Haren? How 'bout that," Nationals manager Davey Johnson said, excitedly. "He was great. He still had some left in the tank, too."
In his longest start since May 30, Haren walked one and struck out six.
"It's obviously been a long time to have that winning feeling after a game," smiling former All-Star said. "It definitely feels good."
Bad innings, often caused by the 21 home runs he's allowed this season, have been Haren's issue. His winless drought wasn't a case of bad luck but primarily poor pitching, though he's now allowed two runs or fewer in three of his last four starts.
In between victories, the veteran right-hander made 11 starts, going 0-8 with a 6.18 ERA. Even worse, Washington lost all 11 games, including three since Haren returned from the disabled list on July 8.
David Wright nearly homered off Haren in the first and sixth innings, but his high-arcing shots down the left-field line landed wide of the pole.
"Gave up a couple of home runs -- foul," Haren cracked. "Thankfully, they were foul today."
Haren also doubled to help the Nationals win for the third time in four games.
Desmond and Span hit back-to-back homers against Dillon Gee (7-8) in the second and Harper followed with a two-run drive in the third.
Harper had two hits in his return to the starting lineup after being limited to pinch-hitting duty in the second game of Friday's doubleheader. The All-Star outfielder aggravated his left knee while diving for a ball in the opener.
After Haren's leadoff double in the third, Harper hit his 15th home run of the year.
Despite a tumultuous week, which included the Nationals firing their hitting coach, demoting former closer Drew Storen to the minors and an 11-0 loss to the Mets, Washington has regained its touch.
"I think that could probably be rock bottom there," Haren said of Friday's 11-run loss. "We don't have any more time for hitting bottom anymore. ... I was finally able to maintain momentum, something I haven't done all year."
Wright had two singles and an RBI for the Mets, who have lost two straight. Washington took the second game on Ryan Zimmerman's game-ending homer.
"The home runs are killing us, there's no doubt," Mets manager Terry Collins said.
Span hit his first home run with the Nationals and first for the former Minnesota outfielder since Oct. 2, 2012, a span of 426 plate appearances.
"My home run trot was definitely a little rusty," Span said. "I think I stutter stepped around third. I was just trying not to fall."
The game was delayed by rain for 62 minutes with one out in the bottom of the eighth. Only scattered fans from the original crowd of 37,464 returned to watch the final five outs.
Rafael Soriano pitched the ninth for his 26th save.
With Eric Young Jr. on second following a single and stolen base in the sixth, Wright's two-out single ended Haren's shutout hopes.
Haren and the Nationals bullpen held New York to one hit over the final three innings. Reliever Tyler Clippard pitched a spotless eighth.
Gee had not lost since June 17 and did allow an earned run in his preceding two starts. He dominated the Nationals in three previous starts this season, posting a 3-0 record with an 0.96 ERA.
"The balls they hit out, they were mistakes, they weren't good pitches," said Gee who pitched seven innings, allowing four runs on six hits. "They did a good job. I was happy to at least get through 7 innings. That was big. But the damage had been done."
Minus the delay, the game took 2 hours, 17 minutes. ... Washington has seven sets of back-to-back home runs this season. ... The Mets are moving to a six-man pitching rotation in an attempt to limit the number of innings pitched by starters Matt Harvey and Zack Wheeler. Following Gee and Carlos Torres in Washington, Jeremy Hefner pitches Monday at Miami followed by Wheeler, Jenrry Mejia and Harvey. ... Torres (1-1, 0.94) opposes Washington's RHP Taylor Jordan (0-3, 3.68) in Sunday's series finale.