Scunthorpe beat Derby on penalties to seal a thrilling League Cup encounter.
Headers from Richard Keogh and Jake Buxton put the Rams two up, and Theo Robinson steered home another.
Andy Barcham replied but Buxton headed in again before Mike Grella netted, and Robinson's penalty was then saved before Bobby Grant made it 4-3.
Nathan Tyson made it 5-3 but Connor Jennings and Grant levelled in stoppage time, before Jennings scored in the shoot-out and Tom Naylor hit the bar.
It was a pulsating evening in the East Midlands with the hosts looking to have given themselves an unassailable lead by half-time through Keogh, Buxton and Robinson, and whenever the Iron looked to have got back into the game, Derby pulled away again.
Andy Barcham made it 3-1 with a low drive after the break, but Buxton headed in almost immediately to restore the three-goal cushion.
Grella offered the visitors hope once more with a shot into the top corner, and they were stirred when Sam Slocombe saved Robinson's penalty following a foul on Keogh by David Mirfin.
They smelled blood moments later when Grant also found the top corner, but Tyson's neat header gave the hosts a comfortable lead yet again.
But Jennings hit back in stoppage time from close range, and Grant powered home a spot-kick with the last kick of normal time after Josh Walker was felled by Michael Jacobs.
Neither side could find a breakthrough in extra-time, and the game went to penalties.
After a total of 19 spot-kicks were taken before Jennings stepped up to give Scunthorpe a 7-6 lead, and it was all over when Tom Naylor rattled the crossbar with his effort.
VIEWS FROM THE TRAINING GROUND
Scunthorpe boss Alan Knill tells BBC Radio Humberside:
"These early games throw up results like this. At 3-0 at half-time you think it's damage limitation, but we came out and it's surprising what a goal does.
"It feels like December already after the first game, it was horrible to watch from start to finish.
"I thought we'd lost the game at half-time."
Sorry, we were unable to load match stats, please try again.