Zimmermann (4-2) gave up five hits and a walk with four strikeouts while Tyler Clippard polished off the shutout with a scoreless ninth.
David Buchanan (1-2) gave up seven runs on 10 hits over six frames in his third career start for the Phillies, who have lost their past four games.
Washington left fielder Ryan Zimmerman returned to play for the first time since April 12 and went 2-for-4 with an RBI. He had suffered from a broken right thumb and had been activated from the disabled list prior to the game.
The game stayed scoreless until the third when the Nationals loaded the bases with one out and Werth worked a 3-0 count before ripping a fastball that one- hopped over the wall in left to score two runs. Adam LaRoche then grounded out to plate another run for a 3-0 lead.
In the fifth, Zimmerman punched a two-out double to left that scored Span, who had reached base on a bunt single, for a 4-0 advantage.
Desmond led off the sixth with his 11th home run of the year. Later in the frame, Span singled with two outs and Rendon followed with a blast over the right field wall for a 7-0 advantage.
The Phillies didn't get a runner past third until the eighth inning when they loaded the bases with three consecutive two-out singles. Marlon Byrd, though, hit into a fielder's choice to end the frame.
Philly put its first two men on base in the ninth, but the next three batters were set down by Clippard to end the game.