Substitute Luis Muriel has put Udinese's noses in front ahead of next Tuesday's second leg in Florence. Juan Manuel Vargas had cancelled out Antonio Di Natale's opener, but Vincenzo Montella's side will have to come from behind in order to reach the final.
Montella handed Modibo Diakite a debut in defence, following a deadline day transfer from Sunderland. Alberto Aquilani joined a growing injury list, while Anderson was dropped after a disappointing debut in Saturday's surprise 1-0 defeat at Cagliari.
The Stadio Friuli pitch had done well to absorb a couple of days of rain and both sets of players were greeted by a light downpour. Di Natale saw an early shot blocked by Gonzalo Rodriguez, while Mati Fernandez fired over from the edge of the box.
Di Natale unwittingly deflected a Nico Lopez effort wide, but the veteran was in an offside position and couldn't get out of the way in time.
Midway through the first half, Vargas picked up Fernandez's cutback in the box and dragged an effort wide. Udinese threatened on the counter attack. Neto could only parry Giampiero Pinzi's grasscutter and Roberto Pereyra put the rebound into the side netting. Igor Bubnjic fell foul of the wet conditions, slipping to let Joaquin through on goal, but the Spaniard blazed his shot over.
Another counter attack paid dividends for Udinese nine minutes before the break. Pereyra was the architect, playing a defence splitting ball to Silvan Widmer out wide. The Swiss midfielder rolled the ball across the box for Di Natale to sweep in at the back post.
Fiorentina were livid not to be awarded a penalty less than a minute later. Alessandro Matri's backheel hit the elbow of Maurizio Domizzi, but the referee opted to play on and Borja Valero was booked for taking his protests too far. He will miss the return leg in Florence. Scuffet bravely rushed out of goal to block a Matri effort with his body.
La Viola got back on level terms in spectacular style on the stroke of half time. Di Natale was dispossessed in midfield and Vargas unleashed a screamer from 25 yards, which zipped past Scuffet and went in off the underside of the bar. Di Natale had a strong case for a foul, but instead Fiorentina snatched a precious away goal.
The away side pressed after the break. Matri volleyed over from a Borja Valero cross, before Scuffet stuck out a leg to stop a Joaquin shot from sneaking in at the near post. Vargas hit a free kick straight at the young goalkeeper, then Gabriel Silva blocked a Joaquin volley at the back post.
Matri teed himself up to send an overhead kick wide, while Vargas couldn't direct his header on target from close range. Udinese introduced Muriel and the substitute almost scored just seconds after coming on. Widmer carved out an opening at the near post for the forward to turn and shoot over.
Muriel brought back Udinese's attacking threat. He squeezed between two markers to meet a Bruno Fernandes through ball, but his first touch let him down allowing Neto to smother the ball. Muriel rediscovered his form eight minutes from the end. He picked up the ball outside the area and sent a shot off the inside of the post and into the net.
Udinese: Scuffet; Bubnjic, Domizzi, Heurtaux; Widmer, Gabriel Silva, Allan, Pinzi, (Badu 78) Pereyra; Di Natale, (Fernandes 46) Nico Lopez (Luis Muriel 66)
Fiorentina: Neto; Rodriguez, Diakite, Savic, Pasqual; Borja Valero, (Andow 76) Pizarro, Mati Fernandez; Vargas, (Matos 88) Joaquin; (Cuadrado 70) Matri
Goals: Di Natale 36 (U) Vargas 44 (F) Luis Muriel 82 (U)