Match ends, Leicester City 1, FC Porto 0.
Leicester beat Porto in their first home Champions League game to maintain the winning start to their first season in Europe's premier club competition.
Islam Slimani, who had a prolific scoring record against Porto with his former club Sporting Lisbon, headed the only goal from a Riyad Mahrez cross.
Porto substitute Jesus Corona hit the post, but the Foxes held on.
Leicester lead Group G by two points from second-placed FC Copenhagen, who they meet on 18 October.
Slimani slays the Dragons again
Slimani, a deadline-day signing for a Leicester club record £29m, tormented Porto so much during his time with Sporting that he earned the nickname "the Dragon Slayer".
In three previous matches in 2016 alone, the Algeria international had netted five times.
Here, he met the teasing, curling cross of the excellent Mahrez, diving towards the ball at the back post to head past a reluctant Iker Casillas.
It is his third goal in four games for the Foxes, all of which have been scored with his head.
Come back to what you know
Leicester, last season's surprise Premier League champions, have made an uncertain start to the defence of their title, losing three of their opening six games and conceding four goals in defeats by both Liverpool and Manchester United.
Yet the template that brought success last season - a deep, solid backline and pacey counter-attacks - was once again employed with success at a raucous King Power Stadium.
After seeing his side leak three goals to corners at Old Trafford on Saturday, Leicester boss Claudio Ranieri preferred Luis Hernandez to Danny Simpson at right-back, but it was centre-halves Wes Morgan and Robert Huth who impressed.
At the other end, Mahrez caused trouble on the right in the first half, Vardy explored the channels and Slimani barely stopped running.
Porto pressure comes too late
For two-time European champions Porto, a domination of the second half - they had eight attempts on goal to Leicester's three - only brought serious pressure in the dying moments.
Indeed, until a frantic, backs-to-the-wall final 10 minutes, a low save from Hector Herrera's long-range effort was the biggest test of the returning Kasper Schmeichel in the Leicester goal.
But, as Porto pressed, the Foxes were pushed deeper and goalmouth confusion became commonplace, with Corona's back-post effort deflecting off Marc Albrighton and on to the woodwork.
As the tension increased, a flurry of late corners was not enough for Porto to improve a dismal record in England that extends to 17 games without a win.
What they said
Leicester boss Claudio Ranieri: "We suffered in the last 10 minutes but it was important to win. Concentration was high, we were resilient, I'm very happy.
"We played with our spirit tonight. The last pass wasn't always there, but Riyad Mahrez made one fantastic pass for Slimani."
The stats you need to know
- Leicester City are the 10th club to represent England in the Champions League and the first to start their debut season with two victories from their first two matches.
- Islam Slimani (Leicester, Sporting CP) became the first player from Algeria to score for multiple sides in the Champions League.
Leicester, who have won only two of their six Premier League games this season, host Southampton on Sunday at 14:15 BST. Their next Champions League fixture is at home to FC Copenhagen on Tuesday, 18 October, when Porto travel to Club Brugge.
- 6HuthBooked at 54mins
- 26MahrezSubstituted forGrayat 88'minutes
- 19SlimaniBooked at 32minsSubstituted forKingat 82'minutes
- 9VardyBooked at 24minsSubstituted forMusaat 90+3'minutes
- 28FelipeBooked at 21mins
- 5Marcano Sierra
- 30Torres MuñozSubstituted forJM Coronaat 78'minutes
- 22DaniloBooked at 49mins
- 20Brás AndréSubstituted forHerreraat 63'minutes
- 11LópezSubstituted forJotaat 63'minutes
- 10André SilvaBooked at 23mins
- 12Malheiro de Sá
- 17JM Corona
- Cüneyt Çakir
- Shots on Target
Second Half ends, Leicester City 1, FC Porto 0.
Substitution, Leicester City. Ahmed Musa replaces Jamie Vardy.
Corner, FC Porto. Conceded by Luis Hernández.
Foul by André Silva (FC Porto).
Christian Fuchs (Leicester City) wins a free kick in the defensive half.
Corner, FC Porto. Conceded by Christian Fuchs.
Attempt saved. Otávio (FC Porto) header from a difficult angle on the left is saved in the centre of the goal. Assisted by Héctor Herrera.
Substitution, Leicester City. Demarai Gray replaces Riyad Mahrez.
Foul by Otávio (FC Porto).
Riyad Mahrez (Leicester City) wins a free kick on the right wing.
Attempt missed. Diogo Jota (FC Porto) right footed shot from the centre of the box misses to the left. Assisted by Miguel Layún with a cross.
Danilo Pereira (FC Porto) wins a free kick in the defensive half.
Foul by Wes Morgan (Leicester City).
Attempt blocked. Riyad Mahrez (Leicester City) left footed shot from the right side of the box is blocked.
Foul by Alex Telles (FC Porto).
Jamie Vardy (Leicester City) wins a free kick on the right wing.
Attempt missed. Jesús Manuel Corona (FC Porto) left footed shot from the right side of the box is high and wide to the left.
Attempt blocked. Jesús Manuel Corona (FC Porto) right footed shot from the right side of the box is blocked.
Substitution, Leicester City. Andy King replaces Islam Slimani.