Washington swept a three-game, interleague series and the Nationals remained unbeaten at home in six outings.
It was a 3-3 game heading into the Washington fourth, but Chicago starter Dylan Axelrod put runners on first and third with one away and then threw a wild pitch that allowed pitcher Dan Haren to score the go-ahead run.
Zimmerman's double came later in the inning and the Nationals added a run in the eighth on Bryce Harper's RBI single.
Haren (1-1) gave up three runs on 10 hits over five innings to get the victory. Rafael Soriano came on in the ninth and earned his fifth save.
Axelrod (0-1) surrendered six runs on seven hits over 3 2/3.
Ohio crash that killed two caught on camera [VIDEO]
Wisconsin business offering 'therapeutic cuddling' forced to close