The Reds - who beat the same opponents 5-0 on aggregate in the round-of-16 last season - looked like they could be on course for a similar rout when Naby Keita gave them the lead after only five minutes.
Roberto Firmino then doubled that advantage before the half-hour mark as Liverpool cruised to a comfortable victory that leaves them on course for a second consecutive semi-final, crucially avoiding conceding an away goal in the process.
Porto were keen to get on the front foot early and almost hit Liverpool with a hammer blow inside two minutes when the in-form Moussa Marega found space inside the area, but he could not wrap his foot around the ball and ended up firing comfortably wide of the target.
However, despite the visitors' positive start they found themselves behind after just five minutes as Keita made it two goals in as many games, having failed to score in any of his first 27 outings for the club.
James Milner and Sadio Mane were involved in the buildup to find Firmino inside the area, and the Brazilian then teed up an unmarked Keita on the edge of the box. The Liverpool midfielder still needed a touch of luck with his finish, though, as his shot deflected off Oliver Torres on its way past a helpless Iker Casillas.
The opener helped Liverpool settle into the match and begin seeing the lion's share of possession, although Porto were still a threat on the break and it took an important piece of covering defending from Virgil van Dijk to thwart a clear chance for Marega after 17 minutes.
The hosts should have doubled their advantage midway through the first half when Mohamed Salah pounced on a loose pass to race clean through on goal, but his finish was tame and trickled a yard wide when he only had Casillas to beat.
Liverpool's second goal did arrive just four minutes later, though, as Jordan Henderson's through-ball unlocked the defence and released Trent Alexander-Arnold, whose low cross into the six-yard box was tapped home by Firmino.
Porto were still in a position where an away goal would get them right back into the tie, and they should have provided it on the half-hour mark when Marega found himself through on goal only to be denied by the feet of Alisson.
In the same attack Alisson batted the ball against Alexander-Arnold when conceding a corner, and after surviving a VAR penalty review for a handball Liverpool were almost undone from the resulting delivery as Marega again found space, but this time he could not get enough contact on his twisting volley.
Having survived three scares in quick succession, Liverpool then squandered the chance to kill the first leg off inside 34 minutes when Keita and Henderson combined to tee up Firmino, who tried to guide his half-volley into the top corner but narrowly missed the target.
It proved to be the last chance of an action-packed first half, and it did not take long for the first talking point of the second half either as Liverpool had the ball in the back of the net for a third time - only for Mane's finish from Henderson's cross to be disallowed for offside - a touch-and-go decision backed up by VAR.
The home side had another chance to add to their advantage in the 52nd minute when they hit Porto on the break, but Danilo Pereira tracked Salah all the way and made an important block to take the sting off the Egyptian's shot.
Both sides seemed content with the 2-0 scoreline for much of the second half, with Porto seemingly happy to still be in the tie heading into the second leg, although the visitors' best chances continued to fall the way of Marega.
The striker - looking to become only the fourth player to score in seven successive Champions League games - drew one low stop from Alisson from a tight angle but then wasted a better chance when firing wide of the near post while ignoring an unmarked Otavinho in the middle.
Mane also came close with a curling effort which drifted narrowly wide at the other end, but Liverpool's main focus for much of the second half appeared to be keeping their clean sheet intact and they comfortably saw out the win without shipping what could have been a damaging away goal.
The Reds will travel to the Estadio do Dragao for the second leg next Wednesday, but only after another crucial match in their Premier League title challenge as Chelsea visit Anfield on Sunday.
Porto are also involved in a top-of-the-table tussle which looks set to go down to the wire, with only goal difference separating them from leaders Benfica ahead of Saturday's visit to Portimonense.
LIVERPOOL (4-3-3): Alisson; Alexander-Arnold, Lovren, Van Dijk, Milner; Henderson, Fabinho, Keita; Salah, Firmino (Sturridge 82'), Mane (Origi 73')
PORTO (3-4-3): Casillas; M Pereira (Fernando 77'), Felipe, Militao; Corona, D Pereira, Torres (Costa 73'), Telles; Otavinho, Soares (Brahimi 62'), Marega