A fumble from Reading goalkeeper Adam Federici in extra time handed holders Arsenal a 2-1 victory and a place in the FA Cup final.
The Royals keeper, who had made some fine saves earlier in the match, allowed Alexis Sanchez’s low shot to squirm between his legs and over the line on 115 minutes.
That proved to be enough to see the Gunners book a return to Wembley as they try to defend their trophy on May 30.
Sanchez had swept the north Londoners into the lead on 39 minutes.
However, Reading were level when Garath McCleary’s volley was deflected past goalkeeper Wojciech Szczesny, who could only palm the ball back over the line.
Arsenal twice hit the woodwork through a header from defender Gabriel and a close-range shot by Aaron Ramsey, but could not find a winner in normal time.
Arsenal manager Arsene Wenger named a strong XI and they made a positive start, with Danny Welbeck latching on to a through ball and forcing goalkeeper Federici to block.
The Royals No. 1 had to be alert again with a smart save when Per Mertesacker met a corner from Mesut Ozil at the near post after eight minutes.
Reading — who had lost all their 12 meetings with Arsenal over the past 80 years — looked to counter through Scotland forward Jamie Mackie.
Midfielder Jordan Obita tested Szczesny, back in goal on his 25th birthday, with a low effort from 25 yards.
Sanchez darted clear and stabbed the ball past the advancing Federici before being clipped by the goalkeeper’s trailing leg well outside the penalty area. However, referee Martin Atkinson signalled only for a goal-kick.
Reading, who had conceded just two goals in their five FA Cup ties this season but were without a victory in six league games, sat deep as Arsenal failed to break them down.
The Championship side, though, were finally carved open on 39 minutes by a goal of the highest quality.
Mesut Ozil looked up, some 30 yards out, before floating a perfectly weighted pass to Sanchez in the penalty area. The Chile forward turned back inside Garath McCleary before slotting past Federici.
Reading looked in need of something extraordinary to revive hopes of making a first FA Cup final in their history — and it arrived on 54 minutes.
Pavel Pogrebnyak battled down to the left goal-line and floated a ball back up through the six-yard box.
McCleary arrived at the far post and volleyed it goalwards, with his shot deflecting off Gibbs and wrongfooting Szczesny, who could only palm the ball over the line.
From a position of relative comfort, the Premier League side, who had won eight straight matches, were rattled as Reading found an extra gear attacking the goal in front of their massed ranks of supporters.
On 63 minutes, Arsenal were forced into a change as Mertesacker hobbled off, replaced by Gabriel.
The Brazilian was within inches of putting the Gunners back in front when his bullet header from a corner was brilliantly tipped onto the crossbar by Federici.
Wenger then made a tactical change on 72 minutes as Welbeck was replaced by Olivier Giroud.
Gabriel planted a free header wide from six yards following a floated free-kick by Ozil before Szczesny produced a smart save to beat away a low 20 yard strike from Nathaniel Chalobah.
Arsenal hit the woodwork again moments later when Ramsey battled past Obita into the six-yard box, the ball rebounding off the keeper and back to the Wales midfielder who crashed it onto the post.
The match was open as both teams pressed, Pogrebnyak getting clear but failing to find a finish and Ramsey, whose goal won last year’s FA Cup, firing over as the clock ticked down.
Arsenal had needed extra time and then penalties to get past Wigan at the same stage of last season’s competition and they regrouped for the added half hour, with Santi Cazorla drilling a rising 20-yard shot over.
As they had earlier in the match, Reading were happy to sit back and soak up plenty of pressure.
Theo Walcott came on, replacing Francis Coquelin, in the 101st minute to make his first appearance in more than a month.
Ramsey’s low drive was deflected up and over the crossbar by Federici, but the Australian’s luck was out on the stroke of the half-time break.
Sanchez cut in from the left and drilled in an angled shot, which went through the goalkeeper’s legs and trickled over the line.
Arsenal looked for a third to kill off the game in the second period, with Giroud hitting the outside of the post after being teed up by Ozil.