Rodrigo Palacio had not scored since December – a run dating back to his winner in the Milan derby – but was a constant threat and opened the scoring in the 34th minute for Walter Mazzarri's side on Saturday.
Inter dominated the first half but were pegged back just after the break as Juan Cuadrado's 25-yard effort gave him his second goal in as many matches.
The visitors deservedly secured all three points midway through the second half though, as substitute Icardi converted Yuto Nagatomo's cross.
The win moves fifth-placed Inter to within five points of their opponents in the league table and opens up a three-point gap on Verona in sixth.
Palacio was lively from the beginning and after closing down Neto, he nearly scored when he blocked the Fiorentina goalkeeper's attempted clearance, only to see the ricochet go narrowly wide.
A swift counter-attack from Inter in the 13th minute created another chance for the 32-year-old, but on this occasion he was denied by the post.
Palacio then latched onto a well-weighted through ball and beat Neto with a low shot across goal, but the woodwork intervened.
Mazzarri's side were in the ascendancy and Diego Milito was guilty of missing two chances to open the scoring, firstly having a shot well saved by Neto before shooting high and wide 10 minutes later.
The deadlock was finally broken just after the half-hour mark though, as Fredy Guarin turned and lobbed a left-footed ball towards Palacio.
The striker controlled the pass on his chest and reacted quickly, beating Neto to the bouncing ball and firing into the unguarded net.
After only testing Inter goalkeeper Samir Handanovic once in the first half, Fiorentina sprang to life after the break and levelled in the 47th minute through Cuadrado.
The goalkeeper appeared to misjudge the Colombian's long-range effort and let the ball under his outstretched arm.
Parity lasted just 18 minutes though, as Icardi latched onto a pinpoint cross from Nagatomo to fire past Neto.
Replays showed he may have been offside when the ball was delivered and his goal forced Fiorentina's hand, as coach Vincenzo Montella introduced striker Mario Gomez with 22 minutes to play.
But the German, who has been sidelined with a knee injury since September, was unable to earn his side a point as he agonisingly failed to turn a volley across goal from fellow substitute Alessandro Matri in at the far post.