Richard Dunne and Darren Bent had put the visitors in command at the break but the Gunners were given a lifeline at the start of the second half when Dunne upended Aaron Ramsey, and Van Persie coolly dispatched the resulting spot-kick.
Within two minutes, Theo Walcott had levelled via a fortunate ricochet and then another penalty from Van Persie completed the turnaround to send Arsene Wenger’s men through to the last 16 against Sunderland or Middlesbrough.
Arsenal – who had lost three successive Premier League games to lose ground on the top four – started quickly.
Thomas Vermaelen lashed a 25-yard strike goalwards which Villa keeper Shay Given touched over and, on 13 minutes, Walcott collected Tomas Rosicky’s pass and skipped into the Villa box, but could only blast his shot past the near post.
Despite being pegged back, Villa defended resolutely and looked dangerous on the break through Bent and Keane.
And on 33 minutes, they took the lead. A well-worked corner saw Stiliyan Petrov’s backheel release Keane, who floated the ball through the Arsenal six-yard box where Dunne got up above a static defence to power in a header.
Arsenal looked for an immediate response, with Given needing two attempts to gather a low shot from Rosicky before blocking a Ramsey effort at his near post.
The Villa stopper then beat away Oxlade-Chamberlain’s low, 20-yard strike, before the visitors broke away to make it 2-0 just before half-time.
Stephen Ireland fed Bent and his angled drive was parried away by Lukasz Fabianski, but the England striker was first to the loose ball and slotted it in from the tightest of angles.
Arsenal had regrouped during the interval and were quickly back on the offensive as Per Mertesacker’s header from a corner was cleared off the line by Ireland.
Another flowing Arsenal move opened up the Villa defence, but Ramsey stabbed his shot straight at the keeper.
The Gunners were awarded a penalty on 54 minutes Dunne upended Ramsey after he latched onto Alex Song’s through-ball.
Van Persie made no mistake from the spot, sending Given the wrong way as he slotted into the bottom-left corner, to give the tie new life.
Within two minutes, Arsenal were level.
Walcott darted into the right side of the Villa penalty area and stabbed the ball across the goal-line, where Alan Hutton smashed his clearance back against the England forward and it ricocheted into the net.
The Emirates Stadium faithful, so critical of Wenger in last weekend’s 2-1 defeat by Manchester United, were now in full voice as the home side continued to sweep forwards.
Laurent Koscielny burst down the left and into the edge of the Villa box, where he was caught from behind by Bent and again referee Mike Jones pointed to the spot.
Van Persie stepped up once more, this time putting the ball into the bottom right corner for goal number 25 of the season to complete the turnaround on the hour.
Villa were left stunned but to their credit, and roared on by a 5,000-strong travelling contingent, they looked to break quickly through Gabriel Agbonlahor.
Walcott cut in from the right and Given had to be alert to beat away his angled drive, the rebound falling just behind Van Persie.
Petrov beat the offside trap, but his cutback was booted clear by Mertesacker.
Ciaran Clark glanced a header goalwards, which Fabianski held and the Gunners closed out the final 10 minutes to take their place in round five, faith in Wenger restored.