Jamie Vardy came off the bench to condemn Arsenal to back-to-back Premier League defeats.
The Gunners missed a hatful of chances in the first half and were made to pay after the break as Vardy replaced Harvey Barnes to head in a late winner.
There was little in response from the hosts as questions of Arsenal’s attacking input intensified.
Mikel Arteta opted to make five changes from the Europa League victory over Rapid Wien on Thursday. Thomas Partey was handed his full Premier League debut while Granit Xhaka and Dani Ceballos came into midfield alongside him.
Full-back Héctor Bellerín and Kieran Tierney were also restored to the starting XI alongside midweek match winner Pierre-Emerick Aubameyang.
After a calamitous night in Austria Bernd Leno would have wanted a less eventful evening but inside two minutes his clearance fell straight to James Maddison, who fired wide from 45 yards with the goal gaping.
The Gunners went straight on the attack and won a corner that Alexandre Lacazette headed past Kasper Schmeichel but the offside flag rescued the Foxes.
Arsenal put the early scare out of the minds and started to find food rhythm going forward with Bukayo Saka and Aubameyang going close. Tierney was enjoying his evening down the wing and after setting up Aubameyang for two headers, Lacazette misjudged his effort from another excellent delivery with the goal at his mercy.
The second half started with an injury for Arsenal as David Luiz had to be replaced by Shkodran Mustafi, who has only just recovered from a lengthy spell on the sidelines himself.
Both sides were fortunate to remain with 10 men after questionable challenges from Youri Tielemans and Bellerín, who were both on bookings, but with no real chances created Nicolas Pépé replaced Saka while Jamie Vardy was introduced for Leicester and the Englishman had the desired impact.
Tieleman’s pass cut the Arsenal defence open and put Cengiz Ünder through on goal but the Turk opted to play it to Vardy to notch his 11th goal in 12 appearances against the Gunners.