Marten de Roon's stunning half-volley had looked like being the game's decisive goal, but on-loan Sevilla forward Muriel tapped in from close range in the 79th minute to set up a mouth-watering second leg.
Two goals in as many minutes from Alejandro Gomez and Mario Pasalic had earlier put the visitors 2-0 up before a quick-fire double from Federico Chiesa and Marco Benassi restored parity.
Hans Hateboer headed against the crossbar in stoppage time as Atalanta came agonisingly close to snatching a precious win, yet Fiorentina held on to extend their unbeaten run in all competitions to 10 games.
6 - Federico #Chiesa has netted 6 goals in the last 3 Coppa Italia games, the last player to score in Last 16, Quarterfinal and Semifinal in the same edition was Paulo Dybala in 2016/17. Talent. #FiorentinaAtalanta #CoppaItalia— OptaPaolo (@OptaPaolo) February 27, 2019
Atalanta started in devastating fashion, racing into a two-goal lead after just 18 minutes.
Gomez got them on their way by applying a composed final touch to Josip Ilicic's throughball, with the former Fiorentina midfielder again the provider for Atalanta's second just two minutes later, clipping in a precise cross that Pasalic steered through the legs of Alban Lafont.
Stefano Pioli's side belatedly woke from their slumber in the 33rd minute, Chiesa picking Jose Luis Palomino's pocket on the halfway line and stroking past Etrit Berisha after racing clear.
Fiorentina then pulled level just three minutes later when Benassi hooked a superb volley into the far corner from 15 yards.
However, De Roon restored Atalanta's lead with a sensational strike. Lafont's punch from a corner went only as far as the Dutchman, who ran onto the ball and hammered it beyond Lafont's desperate dive.
The hosts dragged themselves back into the game again with 11 minutes remaining, though, as Muriel slotted in Chiesa's low cross.
Hateboer went close to having the final say in a pulsating game, his looping header bouncing back off the woodwork deep into stoppage time.
What does it mean? Atalanta may be left to rue missed opportunity
With almost two months to wait until the return fixture at the end of April, Atalanta have a long time to stew over what might have been. Twice they put themselves into a position that would have given them an advantage on home soil, only to be pegged back on each occasion.
Fiorentina, meanwhile, will be buoyed by their ability to rally from behind, albeit they will know that their opponents might not be so generous next time.
Ilicic haunts old side
The Atalanta midfielder was imperious in the first half against his former employers, creating Gomez's opener with a swashbuckling run and incisive pass and then picking out Pasalic with a pinpoint cross just two minutes later.
Lafont offers weak resistance
De Roon's strike was a thing of beauty, yet the former Middlesbrough man was only given the opportunity to unleash his rocket courtesy of the Fiorentina goalkeeper's insipid punch. The 20-year-old will also feel that he should have done better with Pasalic's effort.
The two sides face off again on Sunday in Serie A, this time Atalanta hosting Fiorentina at the Stadio Atleti Azzurri d'Italia.