Zambrano (5-6) limited Washington to one run on five hits over 7 1/3 innings, continuing his dominance at Nationals Park. In his last four starts at Washington, the Cubs right-hander has held the Nats to two earned runs over 26 innings.
Cubs closer Carlos Marmol, however, nearly blew a 5-1 lead in the ninth, allowing a bases-clearing double to Adam Kennedy before inducing Ryan Zimmerman to fly out to end the game.
Soriano's three-run blast in the second inning put the Cubs ahead for good and Tyler Colvin added a solo shot in the fourth as Chicago won its second straight game under interim Manager Mike Quade.
John Lannan (5-6) surrendered five runs on seven hits over five frames for the Nationals.