Erik ten Hag's side were in danger of losing to Villa for the second time in a week after trailing twice in the third round tie at Old Trafford.
Beaten 3-1 by Villa in the Premier League last weekend, United fell behind to Ollie Watkins' second half opener.
Anthony Martial equalised but Diogo Dalot's own goal restored Villa's lead in their second match under new boss Unai Emery.
Marcus Rashford hit United's second equaliser and Fernandes put them ahead after Olsen's woeful pass went astray before Scott McTominay wrapped up the victory in stoppage-time.
Ten Hag had said he wanted a "reaction" after branding United's limp loss at Villa Park as "not acceptable".
The United manager got his wish, but not before a scare from Emery's team, who have played with more verve since the Spaniard arrived from Villarreal to replace the sacked Steven Gerrard.
The League Cup remains United's last domestic trophy triumph in 2017 and Ten Hag would relish the chance to end that drought later this year.
He will have to wait until after the World Cup for United's next League Cup tie, with the last 16 scheduled for just days after the final in Qatar.
Cristiano Ronaldo, suffering from illness, was absent from the United squad, so Martial started up front for just the second time this season following a series of injuries.
Martin Dubravka was making his United debut and the former Newcastle keeper was almost embarrassed as Douglas Luiz's inswinging corner arrowed towards the near post, where McTominay headed off the line to spare the Slovak's blushes.
United hit back
That near-miss was the highlight of a scrappy first half as each teams surrendered possession more than 60 times.
The entertainment level rose dramatically after half-time.
Villa took the lead in the 48th minute when Jacob Ramsey's pass caught United in a failed attempt to play offside.
Watkins sprinted in behind Harry Maguire and Dalot before clipping a deft finish over Dubravka.
United produced the perfect response with an equaliser 60 seconds later.
Picked out by Dalot's pass, Fernandes got behind the flat-footed Villa defence and squared for Martial, who had the simple task of tapping in his fourth goal this season.
Villa went back in front after 61 minutes when former United defender Ashley Young crossed to the far post, where Dalot stuck out a boot to deflect Leon Bailey's header into his own net.
On the day his place in England's World Cup squad was confirmed after his renaissance this term, Rashford bagged the 67th minute equaliser.
Rashford started the move with a header towards Christian Eriksen in the Villa area.
When the ball rolled back to him, Rashford showed a deft touch to evaded Tyrone Mings' lunge and then displayed his strength by holding off Calum Chambers before ramming his close-range finish past Olsen.
United had all the momentum by that point and Fernandes completed their comeback in the 79th minute.
Olsen's horrendous pass went straight to Alejandro Garnacho and he set up Fernandes for a powerful strike that deflected in off Mings.
In stoppage-time, McTominay volleyed home from a pin-point cross by eye-catching substitute Garnacho.