Pedro's header on 105 minutes eventually settled the tie and booked the Blues a last-four encounter with Southampton, while Manchester United will face Tottenham Hotspur in the other semi-final.
Marc Albrighton provided a succession of dangerous crosses throughout the game but was on the end of one from Danny Simpson on three minutes, wrapping his foot around a shot which went just wide of the post.
With the combination of Riyad Mahrez and Vardy subdued in the first half, Leicester's midfielders tried to make something happen as Wilfred Ndidi's 25-yard drive forced Willy Caballero into a low diving save.
Morata had a couple of sights of goal before he opened the scoring, firing straight at Kasper Schmeichel from Marcos Alonso's cutback, and heading over the bar after meeting Willian's cross at the near post.
However, the Spaniard's confident finish on 42 minutes defied his 13-game barren run, curling the ball around Schmeichel after Willian had dribbled past two defenders and released him through the middle.
Caballero nearly gifted Leicester a route back into the game just after the restart as he left his goal vacant and scuffed a clearance to Mahrez, who could not control a difficult first-time shot from 30 yards out.
If that was a half-chance, then Vardy was guilty of squandering a golden opportunity six minutes later when he completely miscued a header over the crossbar, after being found unmarked by an acute cross from Ndidi.
The Foxes striker could not miss when he equalised from inside the six-yard box on 76 minutes, with Caballero having initially shown great reflexes to save from Vicente Iborra in an almighty goalmouth scramble.
Chelsea's goalkeeper did deny Vardy with a strong save late on, after Harry Maguire had carried the ball 50 yards, although Morata had a better pair of chances to avoid extra time either side of that effort.
Although he had strayed needlessly offside, the ex-Real Madrid star flicked a Cesc Fabregas cross against the woodwork, and then prodded tamely at Schmeichel who smothered him bravely from Willian's pass.
While his opposite number stood still, Antonio Conte made three changes in the first period of extra time, and one of his substitutes was the match-winner as Pedro struck on the stroke of the additional interval.
The Spaniard ghosted in between Ben Chilwell and Albrighton to steer N'Golo Kante's delivery into a net which had been left empty by Schmeichel, who came for the cross but got nowhere near it with his wild punch.
Leicester tried to muster a reponse as Claude Puel's own subs Fousseni Diabate and Adrien Silva saw shots blocked, but it was Chelsea who stayed in the hunt for a piece of silverware which could save their season.
LEICESTER: Schmeichel; Simpson (Silva, 106'), Morgan, Maguire, Chilwell; Ndidi, Iborra (Diabate, 106'), Mahrez, Albrighton (Gray, 115'); Iheanacho (Okazaki, 68'), Vardy
CHELSEA: Caballero; Azpilicueta, Christensen (Cahill, 101'), Rudiger; Moses, Bakayoko (Fabregas, 46'), Kante, Alonso; Willian (Pedro, 92'), Morata (Giroud, 105'), Hazard