Fiorentina dropped one place to second at two points adrift with Inter Milan, held to a 1-1 draw at Palermo on Saturday, sitting third, also on 18 points.
Roma coach Rudi Garcia applauded both his goalscorers, and his entire team, but admitted the season is far from over.
“We came here to claim top spot, and had the right attitude to the game,” he told Sky Sport.
“We believe in ourselves, but we have to stay humble because we know the season is long.”
He added: “The lads did what I asked, which was to press high up the field when they were in possession and hit them on the counter.
“Gervinho and Salah made plenty of sacrifices to contribute defensively, but did very well for us up front. They were brilliant.”
It was a nervous return to Florence for Egyptian international Salah, who is still the subject of a dispute with his former club following his summer move to the Stadio Olimpico.
Whistled every time he touched the ball at a packed Artemio Franchi stadium, Salah reminded fans what they are missing after just seven minutes when he put the visitors ahead with a fine opener.
Roma midfielder Radja Nainggolan had done well to win the ball with a sliding tackle just outside the area and set up Salah for the Egyptian to fire a superb curling strike that beat Ciprian Tatarusanu at the goalkeeper's far post.
There were no celebrations, just a brief prayer of thanks from the practising Muslim.
Fiorentina spurned a series of early chances, Facundo Roncaglia firing just wide of Wojciech Szczesny's post with the 'keeper at full stretch and Kalinic firing just over the onrushing Szczesny after beating the offside trap to run on to a through ball from his own half.
Fiorentina were pressing high and enjoying plenty of possession but with the chance to go top the visitors' defence was on full alert.
Fiorentina eventually paid the price when Florenzi pounced on a mis-hit pass to launch a long ball forward for Gervinho, who turned on the turbo boosters to power down the right flank.
Salah had pulled almost level with the Ivorian on a two-on-two but Gervinho kept his composure to beat Tatarusanu with an angled strike from the edge of the box.
Matias Vecino came close to reducing the arrears just before the interval, Szczesny producing a great save to keep the Fiorentina midfielder's drive out of the top corner.
Two minutes later, Josip Ilicic forced Szczesny into action with a strike that crept just wide of his left upright.
Fiorentina resumed in positive fashion but Kalinic twice spurned the chance to fashion an equaliser when he was closed down twice in front of goal following low crosses by Ilicic.
But Roma remained dangerous, and should have put the match beyond reach only for Tatarusanu to rush out to push the ball away from Gervinho's feet. When the ball fell to Florenzi, Federico Bernardeschi cleared the right-back's goalbound effort off the line.
Late subtitute Giuseppe Rossi had the ball in the net in the final minutes although Kalinic was already a metre offside.
Khouma Babacar replaced defender Gonzalo Rodriguez on 81 minutes and halved the deficit with a great first-time strike with virtually the last kick of the game in injury time.
Viola coach Paulo Sousa could only lament missed opportunities.
“We played our usual game, keeping possession and creating chances,” he said.
“Unfortunately, we weren't clinical enough. Although we're not winning, we continue to dominate our rivals.”
Earlier, Paulo Dybala scored one and provided an assist for fellow striker Mario Mandzukic as stuttering champions Juventus claimed just their third win of the season in a 2-0 defeat of Atalanta.
AC Milan ended a three-game winless streak with a 2-1 home win over Sassuolo, while Lazio forward Felipe Anderson hit a brace in a 3-0 win over Torino that sent the Biancocelesti up to fourth place on the same points as Fiorentina and Inter.