Inter, looking for only their second win in seven games, started brightly at the Artemio Franchi stadium and were rewarded in the 34th minute when Rodrigo Palacio bundled home from close range.
Although being overrun for long periods, Fiorentina spurned a series of chances before the interval but drew level a minute after the restart thanks to Juan Cuadrado.
Inter, however, maintained much of their first-half momentum and came close to extending their lead on several occasions before Icardi pounced on Yuto Nagatomo’s cross to beat Neto in the hosts’ goal.
Inter’s win kept them in fifth place, and while they lie 21 points adrift of leaders Juventus, the Nerazzurri are now only five points behind Fiorentina in fourth.
Fiorentina, still missing injured striker Giuseppe Rossi, had Borja Valero suspended while Mario Gomez replaced Joaquin late on to make his first appearance since September following a long injury lay-off.
Inter had lost five away games in succession but surprised La Viola with an energetic start which saw Palacio burst through on the counter on 13 minutes only to see his angled drive come off Neto’s upright.
Neto did well to block Diego Milito from close range and the Argentinian striker then hit the side-netting from a tight angle.
It seemed only a matter of time until the Nerazzurri broke the deadlock and Palacio’s persistence was rewarded when he chested down Fredy Guarin’s ball to prod it past the onrushing Neto.
Inter paid the price for a lapse of concentration immediately after the restart, though, when Cuadrado sent a curling effort through the visitors’ defence and under Samir Handanovic to level.
Fiorentina briefly had the momentum but failed to build on their leveller.
Icardi, who has been sidelined since the end of 2013 due to groin problems, replaced Milito on 55 minutes and soon after had the visitors in front.
There was a hint of offside after Icardi slipped past Nenad Tomovic to hit a low volley past Neto after Nagatomo’s cross from the left, but the goal stood.
Tomovic then did well to stop an Icardi-Palacio counter-attack and substitute Saphir Taider delivered a cross which Rolando missed by inches.
Fiorentina spurned a great chance to snatch a share of the points in the fourth minute of injury time when Matri whipped in a cross that a diving Gomez just failed to reach.