Reading's Leroy Lita blasted the decisive penalty over the crossbar as Stoke City progressed to the last 16 of the Carling Cup for the first time in eight years.
Both managers fielded considerably weakened teams and made it clear that extra-time was the last thing they wanted.
It certainly resulted in an open and attacking game and there were chances at both ends before Stoke took a ninth minute lead.
The goal was simplicity itself with Glenn Whelan delivering a left-wing corner and Vincent Pericard heading home at the near post from six yards.
Reading also drove forward at every opportunity and City's reserve keeper Steve Simonsen had a chance to shine when he saved a 25-yard drive from Bobby Convey.
Pericard and Mamady Sidibe were proving a real handful for the visitors and threatened to break through on numerous occasions.
But Reading were back on terms seconds before the half-time whistle when the referee awarded a penalty after Danny Higginbotham grappled with Andre Bikey.
James Henry stepped up to send Simonsen diving in the wrong direction before tucking his spot-kick inside the keeper's right-hand post.
Stoke came out with real purpose at the start of the second half and they were back in front after five minutes of intense pressure.
A left-wing corner by Carl Dickinson led to a scramble which saw Whelan and Pericard have shots blocked before Sidibe swept in the loose ball from eight yards.
Stoke went for the jugular after that and there was little sign of another Reading comeback until Henry buried a cracker 15 minutes from time.
The ball broke kindly for the winger 20 yards out and he hammered an unstoppable left-foot shot which flashed inside Simonsen's left-hand post.
Both teams then did their utmost to fulfill the wishes of their managers and it needed a magnificent save by Adam Federici from Pericard's header before extra-time.
Simonsen then more than matched Federici's heroics with an unbelievable effort to keep out Scott Golbourne's three-yard header in the 103rd minute.
But both teams ran out of steam after that and it was down to penalties.