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.
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.