Vincenzo Montella's side recovered from last week's 2-1 first-leg loss in Udine to win 2-0 at the Artemio Franchi and progress to play in Rome on May 3 in the Coppa Italia final.
The home side was without the suspended Borja Valero, but Mario Gomez was on the bench for the first time since damaging knee ligaments in September. Udinese kept faith with 17-year-old Simone Scuffet between the sticks.
The visitors started brightly. Bruno Fernandes had a snapshot deflect off the Fiorentina defence, then had a probing pass into the box cut off by Stefan Savic.
Fiorentina broke the tie with their first attack of the game on 14 minutes. Joaquin's cushioned header from David Pizarro's cross allowed Pasqual to volley in from six yards. Although the scores were now level, Fiorentina's away goal in Udine gave them an aggregate edge.
Gabriel Silva missed a scissors kick in the box for Udinese, then Mati Fernandez wasted a chance to make it two for Fiorentina when he dragged wide after being allowed to run at goal unchallenged.
Udinese didn't let going a goal down dampen their spirits. Antonio Di Natale missed a guilt-edged chance on 25 minutes. Roberto Pereyra ghosted past his markers and released the ball in the box for the veteran to blaze over. Had Di Natale not leaned back so much, the ball would have found the top corner.
Fiorentina came under more pressure. Neto had to get down to push Gabriel Silva's angled drive past the far post. From the resulting corner, the goalkeeper kept out a weak Maurizio Domizzi header. Neto was rooted as Di Natale saw his header cannon back off the framework.
Five minutes before the break, Scuffet was called into action when he had to beat away a Joaquin effort. The second half was just 45 seconds old when Joaquin forced Scuffet into action again.
Udinese kept on pressing for the equaliser. Fernandes flashed a ball acoss the box which missed everyone, and Di Natale curled a weak free kick into Neto's gloves. Fernandez's grasscutter from outside the box lacked enough power to trouble Scuffet.
Fiorentina lost Savic to injury on the hour, after the defender had to be stretchered off the field. The home side shook off the setback almost immediately, gaining the cushion of a second goal in spectacular fashion. Cuadrado collected a long pass and unleashed a 20-yard rocket which flew into the net off the underside of the bar.
Udinese missed a chance to level the tie straight from the kickoff. Silvan Widmer got in front of his marker, only to shoot off target from point blank range. Widmer went close again midway through the second half, but Neto got down well to smother the Swiss midfielder's shot at the near post.
As the minutes ticked away, Udinese's chances began to diminish. Fernandes blazed over a free kick from distance and Di Natale's attempt from outside the box was off-range.
Six minutes of injury time were added on. Cuadrado picked up a costly booking for time wasting, ruling the winger out of the final. Tempers boiled over on the bench after Udinese's Emmanuel Badu was sent off for dissent. The ball appeared to roll out for a corner after Pasqual dispossessed Thomas Heurtaux in the box, but the referee reversed his decision and left Udinese's players incensed.
The drama wasn't over at that point. Luis Muriel burst clear, but Neto palmed his shot into the air then saved Nicolas Lopez's headed rebound. Domizzi became the second Udinese player to be dismissed for dissent on the final whistle, but the ejection failed to sour the jubilant scenes around the stadium and on the Fiorentina bench.
Fiorentina: Neto; Diakite, Rodriguez, Savic, (Compper 61) Pasqual, Pizarro, Aquilani, Mati Fernandez; Cuadrado, Joaquin, (Vargas 89) Matri (Matos 57)
Udinese: Scuffet; Heurtaux, Danilo, Domizzi; Widmer, Pinzi, (Muriel 57) Allan, Gabriel Silva; (Yebda 90) Fernandes, Pereyra; Di Natale (Nico Lopez 80)
Goals: Pasqual 14 (F) Cuadrado 61 (F)