The in-form striker now has nine goals in his last nine games and booked a last four showdown with Southampton at Wembley next month.
Youri Tielemans also netted to put the Foxes – four-time runners-up – a game away from their first FA Cup final since 1969.
It was just Leicester's second win over United in 23 years but a deserved one as they outplayed and outfought the visitors.
The Europa League is now United's only realistic chance of a trophy this season with Manchester City unlikely to be caught in the Premier Legaue.
Fred set the tone for his own erratic display early when he lost the ball to allow Iheanacho and Ayoze Perez to break, Jamie Vardy's initial cross was blocked but returned to the striker and Dean Henderson parried his low effort.
Vardy wasted a fine opening soon after when his shot was blocked by Harry Maguire with Iheanacho free but Leicester were sharper than United.
They were more controlled and composed and were gifted the lead by Fred after 24 minutes.
United tried to pass their way out from the back and, when Maguire played Fred into trouble, the midfielder sold Henderson woefully short.
It allowed Iheanacho to nip in, round the goalkeeper and tap into an empty net for his 12th goal in 18 FA Cup appearances.
The Foxes continued to press but were pegged back when United burst into life seven minutes before the break.
Paul Pogba found space on the left and his cross was dummied by Donny Van de Beek for Greenwood to sweep in from eight yards.
Yet, six minutes after the break, Tielemans – who is the Foxes' chief creator without the pair – restored their lead.
The midfielder swapped passes with Iheanacho to drive towards goal and, as Fred struggled to keep up, United's defence parted to allow the Belgium international to find the bottom corner from 18 yards.
Alex Telles drilled wide as United looked for an instant response before Vardy should have ended the tie after 58 minutes.
Again Iheanacho was involved as he found the striker who skipped past a static Maguire but, with just Henderson to beat, dragged wide of the near post.
And former Manchester City striker Iheanacho – who scored a hat-trick against Sheffield United last week – sealed Leicester's progress with 12 minutes left when he was left unmarked to head in Marc Albrighton's free kick from two yards.
Kasper Schmeichel turned Fernandes' late free-kick over but there was no way back for United.