Gian Piero Gasperini's side twice squandered a lead in their 3-3 first-leg draw in February but they showed fighting spirit of their own on Thursday to reach the final for just a fourth time, with Lazio awaiting next month.
Luis Muriel opened the scoring early on for Fiorentina, but they were unable to build on their advantage and saw their winless run stretch to 11 matches across all competitions.
Alejandro Gomez won a penalty for his side, which Josip Ilicic converted, and the former sealed the victory 21 minutes from time thanks in large part to a howler from goalkeeper Alban Lafont.
Four of the first leg's six goals were scored inside the opening 36 minutes, and it took less than three of the return for Muriel to open the scoring.
Federico Chiesa played the ball through the Atalanta defence and Muriel coolly slotted underneath Pierluigi Gollini.
But the hosts were level 11 minutes later as, soon after Gollini had kept out Jordan Veretout's shot at his near post, Federico Ceccherini's rash challenge on Gomez in the box allowed Ilicic to convert from the spot.
Marco Benassi was denied from close range by Gollini as Fiorentina pushed for a goal that would have put them in front in the tie, while Lafont was equal to Gomez's drive.
The hosts looked the more dangerous side in the second half, coming close through Duvan Zapata's deflected shot and substitute Mario Pasalic's long-range effort that Lafont pushed wide.
Gomez gave Atalanta some breathing space with a strike that Lafont should have done better to keep out, getting two hands to the ball but failing to stop it on its way through, and Fiorentina never seriously threatened to find the two goals they needed as raucous home celebrations greeted the final whistle.
What does it mean? Atalanta dream goes on
Atalanta ended Juve's four-year domination of the Coppa and they remain on course to lift the cup for just a second time, 56 years on from their last triumph. Gasperini's men face a showdown with Lazio - a side they are four points above in Serie A - following the Biancocelesti's 1-0 win over AC Milan on Wednesday.
As for Fiorentina, this was billed as a season-saving match for them. Their only realistic aim between now and the end of the campaign is to finish in the top half of Serie A.
Gomez produces captain's display
He may have been given a huge helping hand by some poor goalkeeping, but Gomez's goal capped a fine individual outing. The Argentina international also won a penalty for his side and created a couple of chances from open play.
Ceccherini costs his side
Fiorentina did the hard work by taking an early lead to subdue the home crowd somewhat, but Ceccherini's needless challenge on Gomez turned into a pivotal moment as Atalanta pushed on from that goal and sealed their passage.