Jurgen Klopp’s side were well below their best, especially for 30 minutes of the second half, but have the knack of knowing how to win when it matters and late goals left their opponents with a 2-0 deficit to overcome at Anfield in the second leg of this Champions League last-16 tie next month.
At Burnley on Sunday they had proved they can grind out results in difficult circumstances but this was something of a step up in class against the defending Serie A champions.
But with Virgil Van Dijk at times seemingly single-handedly holding the defence together they weathered what storm there was and struck with clinical efficiency like the Liverpool sides of old in Europe.
Half-time substitute Firmino produced a superb flicked header from Andy Robertson’s inswinging 75th-minute corner and eight minutes later Salah’s deflected shot – the eight successive Champions League away game in which he has scored – made Inter’s task all the more difficult.
The gamble of handing teenager Harvey Elliott his first Champions League appearance with a place in the starting line-up, making him Liverpool’s youngest player in the competition, excluding qualifiers, by surpassing team-mate Trent Alexander-Arnold (18 years and 354 days), did not pay off but it was far from the youngster’s fault.
There were far too many more senior players having off days and for a time, especially after the break, it looked like it might cost them.
The game was strangely open for a Champions League knockout tie with Lautaro Martinez lashing a shot wide from just outside the area, Hakan Calhanoglu’s angled shot glancing off the crossbar and Milan Skriniar heading wide at a corner for the hosts in the first half.
Liverpool arguably created better chances with Sadio Mane heading over a Robertson free-kick when he should probably have scored before planting an acrobatic overhead effort into the side-netting.
Either side of those Thiago Alcantara’s dipping volley dropped onto the roof of the net and Alexander-Arnold whipped wide a free-kick.
The visitors’ pressing game was paying dividends in the final third with Inter often getting caught in possession or giving the ball away but there was no profit to be made from that.
Liverpool at least had the reassuring presence of Van Dijk, who usually saves his absolute best for the business end of the season, at the other end.
Edin Dzeko looked to have gained a couple of yards on the edge of the area but the Dutchman’s recovery was effortless to casually dispossess the former Manchester City striker.
Firmino replaced Diogo Jota at the interval but it was Inter who started better with Martinez failing to get on the end of Ivan Perisic’s inviting cross.
Jordan Henderson, Naby Keita and Luis Diaz arrived midway through the second half with the hosts threatening to push home their dominance and the latter was immediately into the action forcing Skriniar to block a shot.
But Liverpool’s play continued to be ragged, only offering more encouragement to their opponents, who frequently tried to exploit the channel between Alexander-Arnold and centre-back Ibrahima Konate.
Denzel Dumfries headed over a corner but Firmino was far more clinical from Robertson’s inswinging delivery and Salah matched that decisiveness when he doubled their lead soon after.
The fact Klopp eschewed his customary fist pumps despite the urging of the travelling support suggested he knew they had probably got away with one and he did not want to push his luck further.
Kingsley Coman struck a last-minute equaliser as Bayern Munich drew 1-1 at RB Salzburg in the first leg of their Champions League round of 16 tie.
Substitute Chukwubuike Adamu put the Austrian underdogs ahead after 21 minutes and it looked as if the six-time European champions would see their record unbeaten away run in the competition end at 21 games.
But Coman, who scored the winner against Paris St Germain in the 2020 final, latched onto Thomas Muller’s flick on to drill home at the far post.
Salzburg started in brisk fashion, but Bayern went close after 10 minutes when Serge Gnabry forced a smart save from Philipp Kohn.
Bayern fell behind after Karim Adeyemi drove at the home defence and Brenden Aaronson touched the ball into the path of Adamu.
The Nigerian, on as a 12th-minute substitute for the injured Noah Okafor, wasted no time in sweeping it past Sven Ulreich in the Bayern goal.
Aaronson soon forced a fine low save from Ulreich and English referee Michael Oliver ruled there was no contact from Benjamin Pavard when Karim Adeyemi fell theatrically in the Germans’ box.
Leroy Sane flashed a shot wide at the other end and Bayern dominated the second period without creating too many chances.
Kohn denied Kingsley Coman and Sane as Bayern belatedly bared their teeth.
But the visitors were fortunate when Ulreich thwarted Adeyemi and the outstretched Pavard brilliantly blocked Adamu’s follow-up effort.