Although they had led through Jordan Rhodes' early penalty, Jermaine Johnson scored twice for Wednesday, with his outstanding second in the 78th minute proving decisive.
Blackburn slip below Huddersfield, who were held to a 2-2 draw by Peterborough as Dwight Gale got a late equaliser for the visitors.
At the top, Hull consolidated their place in the automatic promotion spots by edging out Middlesbrough 1-0, but it was hardly convincing with the only goal coming when visiting goalkeeper Jason Steele fumbled Robbie Brady's 62nd minute free-kick.
Fourth-placed Crystal Palace were held to a goalless draw by struggling Barnsley, while Nottingham Forest drew 1-1 with Blackpool, coming from behind after the dismissal of Isaiah Osbourne.
Brighton and Leicester, scrapping over the final play-off spot, drew 1-1 on the south coast as Kazenga LuaLua snatched an 88th-minute leveller for the Seagulls to cancel out a Matty James strike.
Bolton moved to within two points of the top six with a 2-0 victory over Wolves and Neil Warnock's departure failed to end Leeds' slide as they lost 2-1 at Charlton, although it took a Jonathan Obika goal five minutes into stoppage time to defeat them.
Birmingham and Millwall shared the spoils in a 1-1 draw and Burnley came from behind to defeat rock-bottom Bristol City 3-1 at Turf Moor.
A missed penalty also proved costly for Derby as they went down 1-0 to Ipswich at home, with Carlos Edwards scoring in injury time for the visitors after Jamie Ward missed from the spot late in the first half.
- Sports & Recreation
- Jermaine Johnson
- Jordan Rhodes
- Robbie Brady