The England striker and Riyad Mahrez were brought on in the second half as Claude Puel looked to put City under pressure, but Vardy saw his penalty strike the post before Claudio Bravo stopped the Algerian's effort to spark the visitors' celebrations.
Leicester were their own worst enemy for much of the first half, inviting pressure with a string of avoidable mistakes and one ultimately led to the opening goal - Bernardo Silva steering home after Ilkay Gundogan had wrestled the ball from Kelechi Iheanacho just before the half-hour.
The hosts improved after the break and gave City more to worry about, though clear-cut chances remained at a premium for them, with Bravo rarely forced into meaningful saves until late in proceedings.
The spotlight was on the Chilean deep into eight minutes of stoppage time at the end of regulation time and he could do little to prevent Vardy from forcing an extra half hour with his penalty, which was controversially awarded after Demarai Gray went down under pressure from substitute Kyle Walker.
Still the two sides could not be separated and it came down to the shoot-out, with City ultimately reigning supreme, scoring all four of their kicks and claiming victory thanks to Vardy missing and Bravo swatting away Mahrez' final penalty.
The much-changed and youthful visitors looked more threatening early on and received plenty of encouragement from the error-prone Foxes.
Christian Fuchs was robbed by Silva to the left of Leicester's penalty area, with Ben Hamer bailing the full-back out by parrying the Portuguese playmaker's shot to safety
Hamer then made a mess of things himself in the 15th minute as the ball squirmed from his grasp on the edge of the box.
Harry Maguire stepped in to prevent Gundogan from finishing into the empty net and Silva knocked the rebound wide.
Leicester's resistance ended in the 26th minute, with City finally punishing an error.
Gundogan stole possession from former City youngster Iheanacho in the centre circle and charged through the heart of the Leicester team before flicking a clever pass towards the right-hand side of the area, where Silva provided a neat finish.
Leicester looked a little more promising in attack after the break and, seemingly optimistic about his side's prospects, Puel introduced Mahrez and Vardy from the bench just before the hour mark.
But chances did not suddenly become more frequent, with City actually the next to go close.
Silva seized upon another Fuchs mistake and darted into the area, only to drag a pass behind the lurking Gabriel Jesus.
And Leicester took full advantage of that let-off, as Vardy slammed home from 12 yards after Walker was harshly penalised for tripping Gray deep into the eight minutes of stoppage time added on as a result of a facial injury to Eliaquim Mangala.
The hosts looked understandably buoyed by their equaliser and Vardy nearly had another towards the end of the first half of extra-time, blocking a Bravo clearance and seeing the ball rebound just wide of the bottom-left corner.
Fatigue played an obvious role in the additional period and contributed to some wasteful play at both ends of the pitch, with the finale from 12 yards looking a formality for most of the second period.
Tiredness had no impact on City's players in the shoot-out, however, as Gundogan, Yaya Toure, debutant Lukas Nmecha and Jesus all scored with aplomb.
Leicester's main stars could not follow suit, with Vardy seeing his effort strike the outside of the left-hand post, before Bravo brilliantly denied Mahrez to clinch a place in the final four.