City were punished for missing early chances. Jason Price failed to even hit the target with a free shot six yards out, and minutes later put a header wide.
Steve Torpey then showed him what to do with the opener in the 14th minute. Two City players both went to clear at once, and the ball rebounded to Torpey who blasted home.
Ryan France's involvement in the game was over just after the half-hour mark thanks to a kick from Peter Beagrie. He was replaced by 17-year-old Russell Fry.
Two minutes later, Danny Webb should have levelled. He was put one-on-one, but Scunthorpe 'keeper Tommy Evans palmed away as the City forward tried to go around him.
Richard Hinds replaced Marc Joseph at half time, and Clayton Donaldson came on for Jason Price in the 63rd minute, using up all of City's allowed substitutions. A minute later, this decision backfired as Steve Melton was stretchered off following a wreckless challenge that went unpunished, leaving City with only ten men on the pitch.
But seconds after Melton had gone off, City equalised. Danny Webb spotted Evans in a poor position, and fired a low shot off the inside of his post from 25 yards out.
City survived a scare from a 70th minute corner as Dean Keates blocked an Andy Butler header on the far post.
But Scunthorpe found their way back in front 10 minutes from time. Steve MacLean and Steve Torpey worked the ball over the top, and Matthew Sparrow beat Greg Strong and Alan Fettis to the ball to flick it into the net.
The visitors made the win safe in the 90th minute as MacLean's long-range shot deflected off Hinds and went over Fettis.
6,656 were at the KC Stadium to see Scunthorpe run out 3-1 winners and go through to the LDV Trophy Northern Section Third Round.
City line-up (4-4-2): Fettis; Joseph (Hinds 45), Whittle, Strong, Peat; France (Fry 31), Melton, Keates, Holt; Webb, Price (Donaldson 63).
Un-used sub: Musselwhite.