Atlanta (15-11-3, 48 points) could have clinched a playoff spot in the Eastern Conference with a win and took a 1-0 lead in the 19th minute when Josef Martinez extended his MLS-record goal streak to 14 games.
Columbus (9-15-7, 34 points) staved being eliminated from the Eastern Conference playoffs and is 4-1-5 in the past 10 matches.
The Crew won for the first time when trailing at the half after 10 losses and four ties.
Zardes netted his 12th goal -- eighth on the road -- in the 53rd minute to make it 1-1. He passed to Diaz, whose shot from the right side was pushed to the middle of the box by Brad Guzan. Zardes was first to pounce and scored on a half-volley.
Diaz made it 2-1 in the 60th minute with a blistering put-back after his initial shot was saved. The 20-year-old Costa Rican midfielder has two goals in 10 games since joining the Crew.
Atlanta defender Miles Robinson sent a cross by Diaz into his own goal in the 85th minute for the final tally.
Atlanta had 10 wins and a tie in the prior 11 home games since losing to FC Dallas on April 20.
Josef Martinez got Atlanta United off to a good start to add to his count. He has 24 goals this season and 74 in 80 career MLS games.
Josef Martinez got inside the defender and had his usual clinical finish on Atlanta's first shot.
Atlanta has a quick turnaround, playing at FC Cincinnati on Wednesday. The Crew is at Vancouver on Sept. 21.