Victory for Inter helps them climb five places in the Serie A table and above their opponents, while Fiorentina must pick themselves back up following just a third league defeat of the campaign.
Brozovic opened the scoring with barely three minutes played, smashing a loose ball into the top of the net to set up an impressive first-half showing from Inter.
The Nerazzurri nearly had a second through Candreva soon after, but it mattered little as the Italy international was in the right place to steer Ivan Perisic's cross, which took a touch off Ciprian Tatarusanu, into the back of the net.
Inter fans did not have to wait too much longer for Icardi to make it three, dribbling his way through and getting the better of Tatarusanu to seemingly put the game out of Fiorentina's reach.
There was a sign of momentum beginning to turn when Samir Handanovic turned a free kick around the post 33 minutes in, though, and Nikola Kalinic did pull one back prior to the interval after latching on to a long pass.
Matters were made all the more difficult for the visitors when Gonzalo Rodriguez brought down Icardi and was shown his marching orders on the brink of the interval, yet Josip Ilicic was the next player to find the net on the hour to make it game on again.
Ever Banega and Icardi both came close to sealing things for good, the former being denied by Tatarusanu and the latter shooting over when through, while Perisic struck the outside of the post with his attempt.
Joao Mario may have sealed things with 10 minutes to go at the end of a quick counter, but Icardi's sweeping finish from the rebound in added time ensured that the three points would stay in Milan.