Third-placed Roma, now three points ahead of Fiore, have been transformed since Luciano Spalletti replaced Rudi Garcia as coach in January, losing once in the league before a winning streak that has put them within five points of leaders Juventus.
They took the lead after 22 minutes when Salah squared for Stephan El Shaarawy to score from close range and doubled their advantage three minutes later when Salah's shot took a wicked deflection and looped into the net.
Diego Perotti sidefooted home El Shaarawy's cross after 38 minutes to make it 3-0 before Fiorentina pulled a goal back in first-half stoppage time with Josip Ilicic converting a penalty after Cristian Tello was felled in the area.
News that makes sense
Your trusted source for staying up-to-date with the world around you. Get free daily news updates and analysis, straight to your inbox.
The visitors' hopes of a comeback were snuffed out, however, when Salah ran through on goal and slid the ball beneath Fiorentina keeper Ciprian Tatarusanu just before the hour.
Juve travel to Atalanta on Sunday (1400 GMT) after second-placed Napoli, who are three points off top spot, host another mid-table team in Chievo Verona on Saturday (1945).
(Writing by Toby Davis; Editing by Ken Ferris)
