Mark Hughes’ side went in front after 15 minutes when striker Kenwyne Jones leaped the highest to head home Oussama Assaidi’s inviting cross at the back post.
Charlie Adam then doubled the Potters’ lead shortly after the break with a thunderous left-footed effort from distance which hit the post on its way into the back of the net.
David Nugent headed home Marcin Wasilewski’s cross to give the visitors a lifeline, but despite a wave of late pressure, Stoke held on to seal their progression.
Less than 17,000 were at the Britannia and 4,300 of those were from the visitors, but they were kept relatively quiet as Stoke took control.
England goalkeeper Jack Butland, 20, made his first start for Stoke after coming on against Everton in midweek when Thomas Sorensen picked up an Achilles injury.
Leicester boss Nigel Pearson made five changes from Wednesday’s win over Millwall and the Foxes began brightly, almost taking the lead in the 13th minute when Anthony Knockaert cut in from the left and aimed his shot towards the far corner.
Butland stuck out a hand to stop it but he needed help from Glenn Whelan, who produced a fine block to deny Matty James on the follow-up.
Stoke immediately broke down the other end and Marko Arnautovic squared the ball to Adam, who appeared to have an open goal 15 yards out but this time it was Ignasi Miquel’s turn to pull off a goal-saving block.
There was nothing any of the Leicester back line could do to prevent the Potters opening the scoring two minutes later, though.
Assaidi swung over a fine cross from the left and Jones rose virtually unchallenged to power a header across Kasper Schmeichel and into the bottom corner.
Leicester tried to respond and the lively Jeff Schlupp sliced a shot well wide, while at the other end, Jones had another chance with a header from a corner but this time nodded wide.
With the sparse home crowd, there was a flat feeling to the game, but it did liven up again at the end of the first half.
A Marc Wilson clearance turned into a good through ball for Adam, but Paul Konchesky was alert to clear the danger with Jones lurking.
Leicester broke and Schlupp again got in on the left but Butland held his low shot at the near post.
The Foxes struggled to cope with Jones every time the ball came into the box and he almost doubled the lead in the 52nd minute.
Again it was a header from an Assaidi cross and this time Schmeichel pushed the ball onto a post before gratefully gathering the rebound.
Schlupp looked the man most likely for Leicester and he produced his best effort with a curling left-footed shot that landed on the roof of the net.
But in the 55th minute Stoke doubled their lead – and it was a stunning hit from Adam, who picked up the ball 30 yards from goal and unleashed a left-footed drive that went in off a post.
With just over 20 minutes left Pearson made a double change, sending on top scorers Nugent and Lloyd Dyer for Schlupp and Andy King.
Stoke were looking the more likely to add a third, though, and good work from Arnautovic down the right opened the door for Steven Nzonzi to stroke a shot narrowly wide.
Butland had not had too much to do but he pulled off a terrific save in the 76th minute when Konchesky’s cross was headed towards the top corner by Nugent.
The resulting corner was cleared but Wasilewski crossed the ball back in and this time Nugent gave Butland no chance with a fine header.
Leicester looked much more of an attacking threat and Butland was called upon again when Dyer was played through, the keeper just getting to the ball first.
Chances were coming at both ends and Adam might have made the game safe with four minutes left when he found himself in space on the left of the area but his shot was pushed behind by Schmeichel.