USMNT's Weston McKennie also limped off the pitch just after the hour mark with an injury.
The hosts struggled to create any openings of note in the first half, with their defending not up to the required standard either as they left Zapata free to fire home in the 28th minute.
Juve failed to offer much of a response in pursuit of an equaliser, with Paulo Dybala's late free-kick that clipped the crossbar as close as they came to a leveller.
Atalanta held on in relative comfort and stretched their unbeaten run to eight games in all competitions to stay fourth on 28 points, four points behind leaders Napoli and seven points ahead of Juve who are 11 points off the pace.
The victory was Atalanta's first at Juventus since 1989.
"Atalanta did little in front of goal. The only shot was made by Zapata on our mistake," Juve coach Massimiliano Allegri told DAZN.
"When you don't score things get very nervous. The only thing that we have to do is work, as we have always done, and try to win a game."
Juve came into the match after their heaviest defeat in all competitions since 2004 on Tuesday -- a 4-0 Champions League loss at Chelsea -- and that result looked like it left a mark given their limp first half display against industrious Atalanta.
After the hosts gave the ball away once more, a simple Berat Djimsiti pass cut through the Juve backline all too easily, with Zapata scoring for the seventh successive game in all competitions for Atalanta with an emphatic finish.
"So many times recently we conceded in the closing stages so this is a big step forward for us to win and keep a clean sheet in a fixture like this," Zapata told DAZN.
"It is a tough league. There are many different types of games. It was important we kept a clean sheet against a strong side like Juve and Atalanta hadn't won here in Serie A for many years."
Captain Dybala had Juve's best chance of the first half, but slotted wide from a good position on the edge of the penalty area.
After the break, Atalanta seemed content to sit back on their lead, with Juventus still struggling to make any inroads.
McKennie looked to have worked himself into position for the equaliser but was denied by a last-ditch block, while substitute Federico Bernardeschi fired wide.
The home side did up the ante late on with Dybala thinking he had snatched a late point, but the ball clipped the bar and went over as the groans went around the Juventus Stadium again.