
After Fabio Liverani and Christian Vieri missed from the spot, Ignacio Gomez Novo converted to send Rangers into the final against Zenit St Petersburg on May 14 in Manchester.
The shootout began poorly for Rangers as captain Barry Ferguson had his shot slapped away by Sebastien Frey, who stood no chance against Steven Wittaker, Sasa Papac, Brahim Emdany and Nacho Novo.
Fiorentina had eliminated Everton on penalties in the round of 16 but were stunned by the Scottish side despite a massive dominance in both legs.
Most of the game in Florence was a repeat of the dull, scoreless first leg in Glasgow, with Fiorentina fruitlessly pressing as the Scottish side tried to hit back with swift counterattacks.
A central drive from Riccardo Montolivo after 20 minutes was Fiorentina's first attempt, which posed no threat for Neil Alexander.
The Rangers goalkeeper had no problems on a feeble shot from Adrian Mutu, nor when Montolivo fired high on 23 minutes or when an effort from Mutu was deflected by a defender on 30 minutes.
High drives from Martin Jorgensen and Mutu opened Fiorentina's second half, as the hosts stepped up their pressure but came close only when Mutu fired a fast free kick from the distance to force the first serious save from Alexander.
Fiorentina almost paid dearly for their inability to finalize when Steven Davis profitted from defensive dithering and saw his dangerous effort parried by Frey on 77 minutes.
The French custodian was crucial again for the hosts, deflecting a dangerous drive from Steven Wittaker after veteran Vieri replaced a lacklustre Giampaolo Pazzini and immediately came close, fumbling a close-range chance.
A Vieri diagonal shot flew wide early in extra time, and Zdravko Kuzmanovic aimed a wide header, while Rangers substitute Daniel Cousin had his drive deflected by a defender.
A great volley from Mutu met Carlos Cuellar's leg, before Cousin was sent off with a second yellow card four minutes into the second extra time.
Mutu squandered one more chance, missing a diving header before Vieri volleyed wide from the left flank.
"We must accept this," Fiorentina coach Claudio Prandelli said. "It was a good night, and we could have ended it better. We did all we could, and we must thank these boys, who tried hard until the end.
"Football is this, too. A team who renounced to play was rewarded. There is nothing I would not do again. We tried to do logical things. We played a great tournament, and we are proud to have progressed this far."