Liverpool maintained their 100% record in the Champions League this season by seeing off Porto at Anfield.
Jurgen Klopp's men, who had already secured top spot in Group B and a place in the knockout stages after winning their first four games, picked up another three points against the Portuguese side.
The Reds were not at their best in the first half and although hardly at full tilt in the second either, they scored two lovely goals to clinch another victory.
Spain midfielder Thiago drilled in a stunning, long-range finish, cutting across the ball to produce a rasping 25-yard strike that nestled in the bottom corner.
Egypt forward Mohamed Salah then cut in from the right and jinked his way past a visiting defender before smashing home at the near post.
Porto were punished for missing a glorious chance after 11 minutes when Otavio inexplicably side-footed wide from eight yards out with an empty goal to aim at.
Liverpool hammered Porto 5-1 in the reverse fixture in Portugal and could have handed out another similarly emphatic victory but Sadio Mane's cool finish was ruled out by VAR for offside, as was Takumi Minamino's volley from close range.
Klopp said: "Whoever sees Thiago in training knows he has the technique to do it but even with this technique it doesn't happen constantly that he can fire such a thunderball.
"We could have done better and been more calm in the first half but we were a bit hectic. That is not unusual when you put a team out that has not played together a lot.
"Some people think we might play an easy game but we were not here for that, Anfield is sold out so we want to go (for it)."
The good news for Porto was that AC Milan secured a late victory at Atletico Madrid, meaning the Portuguese side stay second in the group.
Victory for Sergio Conceicao's side in the final group game against the La Liga champions will guarantee passage into the knockout stages.
Thiago coming good?
Klopp rested defender Virgil van Dijk, right-back Trent Alexander-Arnold and midfielder Fabinho while also resisting the temptation to start full-back Andrew Robertson and skipper Jordan Henderson, both of whom are returning to full fitness after injuries.
However the 2019 European champions still had too much class for Porto.
Thiago has endured a stop-start time since joining the club at the start of last season as he adjusted to English football and struggled to gain any rhythm as he dealt with regular injuries.
But the former Barcelona and Bayern Munich player showed his quality at times last season and is doing so more regularly in this campaign, backing up Saturday's excellent performance against Arsenal with another fine showing on Wednesday.
He played just over an hour and recycled the ball in trademark fashion - but the highlight of the night was his goal in front of The Kop.
There looked to be no danger when Porto cleared a corner out of the area, but Thiago showed sublime technique to score his first goal of the season.
The prolific Salah was quiet for much of the contest but converted the one chance that fell his way to take his tally to 17 goals in as many games this term.
His strike meant Liverpool have scored two or more goals in 16 consecutive games in all competitions, the first English team to achieve that feat since Wolves in 1939.
Mane saw a shot deflected away from goal and scuffed off target from a promising position, while Alex Oxlade-Chamberlain - enjoying an extended run in the side - screwed wide from the edge of the box.
Academy product Tyler Morton, 19, filled in for Brazil's Fabinho and played the full 90 minutes on his first Champions League start in the middle of the park.
Klopp added: "If you are in our squad, you are good football player. I have been in the business long enough not to throw players in who are not ready.
"Neco Williams can play, people might be surprised with Tyler Morton but he did exceptionally well. He is a good player and really pleased for him that he put a performance in like this."
Porto will be glad to see the back of Liverpool having failed to beat the Reds in their past 10 meetings and extending their poor record in England to just one win in their past 23 games.
Had winger Otavio taken the early chance that fell his way, it could have been a different story but their big game is now against the Spanish champions.
Player of the match
Thiago AlcántaraThiago Alcántara
with an average of 8.10
Squad number6Player nameThiago Alcántara
Squad number11Player nameMohamed Salah
Squad number26Player nameRobertson
Squad number14Player nameHenderson
Squad number10Player nameMané
Squad number3Player nameFabinho
Squad number15Player nameOxlade-Chamberlain
Squad number7Player nameMilner
Squad number76Player nameN Williams
Squad number80Player nameMorton
Squad number18Player nameMinamino
Squad number27Player nameOrigi
Squad number32Player nameMatip
Squad number21Player nameTsimikas
Squad number5Player nameKonaté
Squad number1Player nameAlisson
Squad number7Player nameDíaz
Squad number9Player nameTaremi
Squad number16Player nameGrujic
Squad number8Player nameUribe
Squad number20Player nameVitinha
Squad number27Player nameSérgio Oliveira
Squad number10Player nameFrancisco Conceição
Squad number19Player nameMbemba
Squad number29Player nameAntonio Martínez
Squad number12Player nameSanusi
Squad number23Player nameJoão Mário
Squad number30Player nameEvanilson
Squad number2Player nameFábio Cardoso
Squad number99Player nameDiogo Costa
Squad number25Player nameOtávio
Squad number3Player namePepe
- 76N Williams
- 5KonatéBooked at 29mins
- 21TsimikasSubstituted forRobertsonat 64'minutes
- 15Oxlade-ChamberlainSubstituted forMilnerat 82'minutesBooked at 88mins
- 6Thiago AlcántaraSubstituted forHendersonat 63'minutes
- 11SalahSubstituted forFabinhoat 71'minutes
- 10ManéSubstituted forOrigiat 72'minutes
- 4van Dijk
- 99Meireles Costa
- 23Neto Lopes
- 19MbembaBooked at 75mins
- 3PepeSubstituted forCardosoat 25'minutes
- 27OliveiraSubstituted forVitinhaat 64'minutes
- 8UribeBooked at 40minsSubstituted forGrujicat 78'minutes
- 30de Lima BarbosaSubstituted forMartínezat 77'minutes
- 9TaremiSubstituted forConceiçãoat 64'minutes
- 11Aquino Cossa
- 17JM Corona
- 18Manafá Jancó
- 28Almeida Costa
Match ends, Liverpool 2, FC Porto 0.
Second Half ends, Liverpool 2, FC Porto 0.
Corner, FC Porto. Conceded by Neco Williams.
Attempt saved. James Milner (Liverpool) left footed shot from outside the box is saved in the bottom left corner. Assisted by Neco Williams.
Foul by Takumi Minamino (Liverpool).
Luis Díaz (FC Porto) wins a free kick on the left wing.
James Milner (Liverpool) is shown the yellow card.
Foul by Divock Origi (Liverpool).
Marko Grujic (FC Porto) wins a free kick in the defensive half.
Hand ball by Neco Williams (Liverpool).
Substitution, Liverpool. James Milner replaces Alex Oxlade-Chamberlain.
Attempt blocked. Divock Origi (Liverpool) right footed shot from outside the box is blocked. Assisted by Tyler Morton with a headed pass.
Corner, Liverpool. Conceded by Marko Grujic.
Corner, Liverpool. Conceded by Zaidu Sanusi.
Substitution, FC Porto. Marko Grujic replaces Mateus Uribe.
Substitution, FC Porto. Toni Martínez replaces Evanilson.
Attempt missed. Jordan Henderson (Liverpool) right footed shot from outside the box is close, but misses to the left from a direct free kick.
Chancel Mbemba (FC Porto) is shown the yellow card for a bad foul.
Divock Origi (Liverpool) wins a free kick in the attacking half.
Foul by Chancel Mbemba (FC Porto).
- Our coverage of Liverpool is bigger and better than ever before - here's everything you need to know to make sure you never miss a moment
- Everything Liverpool - go straight to all the best content