The win lifted Brendan Rogers’ side to fourth on 12 points, while the Gunners stay in 10th place on nine after six games.
Arsenal were left ruing their failure to score in the first half hour when they pushed forward time and again, racking up 10 shots and six corners to Leicester’s one and zero respectively.
They had the ball in the net from a corner in the fourth minute but replays showed at least three players offside as Alexandre Lacazette flicked it past keeper Kasper Schmeichel.
The hosts then almost scored when Kieran Tierney whipped in a cross that captain Pierre-Emerick Aubameyang headed over.
They went even closer to opening the scoring a few minutes later when Alexandre Lacazette, standing in front of goal, somehow nodded another cross from Tierney wide of the far post.
Vardy, who came on with half an hour to play having missed Leicester’s previous two games with a calf injury, broke the deadlock in the 80th minute, heading home Cengiz Under’s cross.
“We weathered a bit of a storm but then started getting into it and we’ve come away with a win. It’s big for us but it’s just the next game where we want to keep improving,” said Vardy.
The win gets Leicester’s season back on track following league defeats by Aston Villa and West Ham United.
“We’ve had a couple of bad results and we wanted to put that right in the league. Luckily, I’ve come on and made an impact,” Vardy told Sky Sports.
“It gives us a little boost. The last two games in the league have not been good enough but to come here and put in a performance like we have is great for the team.”
Vardy’s 11th Premier League goal against the Gunners – more than any other player apart from Wayne Rooney – gave his side their first win at Arsenal since September 1973.