Substitute goalkeeper Jan Budtz beat out two City spot-kicks on his Rovers debut and Darius Vassell missed another to leave Doncaster to claim a place in the last 32.
Given regular stopper Andy Warrington had already been carried off with a suspected broken leg after a superb display in the Rovers goal, it left both goalkeepers claiming man-of-the-match honours and Penney in ecstasy. "Once it went to penalties I really felt confident," said Penney. "Jan saved a lot of them in training and I fancied he would do it again.
"It is a fantastic night for us. Manchester City showed us a lot of respect by playing their strongest side. They wanted to win this competition. We know we have no chance of doing that but we will enjoy the moment anyway."
After a closely-fought but largely uneventful first 90 minutes, until Sun Jihai struck the crossbar in stoppage time, the game erupted into life in the extra half-hour. First referee Graham Salisbury ruled Phil McGuire had fouled Richard Dunne inside the area. This time, Vassell strode up and confidently slammed City into a lead they did not look like losing until the official made his next intervention.
When young full-back Nedum Onuoha slid in on Warrington, the contact appeared accidental. The damage was obvious as the keeper was stretchered from the field in agony. Salisbury thought differently and immediately dispatched Onuoha to the dressing-room.
It proved a pivotal decision, especially as Doncaster took advantage of the extra man and levelled through a penalty of their own late on, Michael McIndoe confidently levelling after Sylvain Distin handballed. The decision proved to be even more costly as within half an hour of the final whistle Salisbury had rescinded his decision.
City boss Stuart Pearce commendably refused to blame the official but instead focused on Onuoha's personal agony. "Nedum is quite distraught," said the former England captain.
"He is not the type of player who would deliberately go out to hurt anyone. He also feels he has let the side down and is quite flummoxed by it all.
"Doncaster deserved to take the tie into extra-time because we didn't pass the ball well enough. It is disappointing because I really wanted us to do well in this competition."
Doncaster Rovers (4-4-2): Warrington (Budtz, 105); McGuire, Albrighton, Roberts, McDaid; Coppinger, Predic (Ravenhill, 52), Green, McIndoe; Fortune-West, Guy (Heffernan, 81). Substitutes not used: Mulligan, Roberts.
Manchester City (4-4-2): James; Onuoha, Dunne, Distin, Thatcher; Sun, Ireland, Reyna (Jordan, 90), Hussein (Croft, 65); Sibierski, Vassell. Substitutes not used: De Vlieger, Sommeil, Richards.
Referee: G Salisbury (Lancashire)