New York took a 4-1 lead into the eighth, but Zimmerman tied the game in that inning with a three-run double and Desmond's two-base hit drove in the go-ahead run in the ninth. Desmond scored later in the inning on a sacrifice fly by Kurt Suzuki.
New York starter Matt Harvey appeared headed to what would have been his eighth win. Instead, he endured his ninth no-decision in his last 14 starts.
David Ardsma relieved Harvey in the eighth and gave up a leadoff single to Roger Bernadina.
Ardsma then retired the next two batters before giving way to Josh Edgin, who promptly surrendered a double to Denard Span that moved Bernadina to third.
After Brandon Lyon relieved Edgin, Anthony Rendon drew a walk to load the bases. That brought up Zimmerman, whose double to left cleared the bases and tied the score.
The comeback made a winner out of Tyler Clippard (6-1), who worked the eighth inning. Drew Storen turned in a perfect ninth for his second save.