A run of one win in seven league games left the Florence club in danger of being dragged into a tight relegation battle, but three goals from their 21-year-old striker put the result beyond doubt at the Stadio Vigorito.
Serbia international Vlahovic became the first Fiorentina player to score three goals in the first half of a Serie A match since Kurt Hamrin in February 1964.
Artur Ionita pulled one back for the hosts early in the second half, but Valentin Eysseric restored the three-goal cushion and the result lifted the Viola to 12th place on 29 points, three ahead of 16th-placed Benevento, who are winless in 11 games.
Fiorentina say Vlahovic contract talks have broken down
- Stones on target as City cruise to victory at Fulham
- Zaha becomes first Premier League player not to take knee
- Sheffield United manager Chris Wilder leaves by mutual consent
Sassuolo moved above Hellas Verona into eighth place after coming out on top against the Veronese club in a 3-2 thriller at the Mapei Stadium.
Hellas twice fought back from behind as Darko Lazovic and Federico Dimarco responded to Manuel Locatelli and Filip Djuricic strikes, but Hamed Traore netted the winner for Roberto De Zerbi's side in the 81st minute to take them one point above the visitors on 39 points.
Udinese captain Rodrigo De Paul earned his side a 1-1 draw at Genoa from the penalty spot, cancelling out an early opener from veteran striker Goran Pandev.
The visitors are 10th with 33 points, while Genoa are 14th with 28 points, eight clear of the relegation zone.
The Ronaldo earthquake – Euro Papers
‘They called me a f****** m**key’ - Koulibaly calls out racist abuse
Inter come back at Fiorentina to go top