Portsmouth 2 Aston Villa 4
Downing marked his first Villa start since a bumper £10million summer move from Middlesbrough with a win-clinching header 16 minutes from time.
Emile Heskey and James Milner and Ashley Young were also on target as Villa fought back from a goal down early on to cruise into the last four.
Premier League bottom club Pompey stunned the 3,000 travelling Villa fans into silence by taking a surprise tenth minute lead, albeit thanks to a huge slice of luck.
Danny Webber's left-wing corner appeared to be heading harmlessly into the arms of stand-in goalkeeper Brad Guzan, until captain Stiliyan Petrov made a mess of an attempted clearance and sliced the ball into the roof of his own net.
The goal sparked Villa into action and O'Neill's side took just two minutes to get themselves back on level terms.
Young sliced the Portsmouth defence in half with a clever through ball to set Heskey free and the England striker coolly lifted the ball over the advancing Asmir Begovic.
Villa's comeback was complete 12 minutes later when Milner fired home into Begovic's bottom left corner with a sweetly struck 20-yard shot.
Portsmouth had the majority of possession in the start of the second half but Villa always looked dangerous on the counter attack.
Downing, who has been sidelined by a metatarsal injury since the end of last season, wrapped up Villa's win in the 74th minute, ghosting in at the back post to head Young's teasing right-wing cross beyond a despairing Begovic.
Substitute Kanu gave Portsmouth a glimmer of hope by scrambling Herman Hreidarsson's centre over the line three minutes from time, only for Villa to restore their two-goal advantage straight from the kick-off.
Heskey broke down the right before crossing for Young and his close-range shot struck Pompey defender Marc Wilson and looped over Begovic and into the net.