George Burley's men romped to a 6-1 victory - just two days after Barnsley had themselves put six past Portsmouth. Johnson started the rout with his first in the 14th minute, and Mark Venus and Richard Naylor made it 3-0 at the break.
Johnson's inspirational performance continued after the break, setting up James Scowcroft in the 73rd minute, before adding his second two minutes later. Barnsley scored a consolation goal through Sean McClare two minutes from time before Jim Magilton scored with the game's last kick.
Birmingham recovered from Colin Cramb's third-minute opener for Crewe before coasting to a 5-1 win at St Andrews. Michael Johnson, Jon McCarthy and Paul Furlong had redressed the balance by the half hour, and David Holdsworth and Peter Ndlovu added the fourth and fifth after the break.
The West Brom striker Lee Hughes missed a great chance with two minutes to play to deny his side three points against Fulham in a 0-0 draw.
Wins for Grimsby and Sheffield United left Norwich as the only First Division club still awaiting a victory. Paul Groves' 30th-minute penalty was enough to dispose of Swindon at Blundell Park and Sheffield United easily won 3-1 at Tranmere, the home side never recovering from going behind to a Paul Devlin goal on five minutes, then having George Santos sent off. Martin Smith added United's second, Steve Yates pulled one back for Rovers, but Devlin hit his second to make the game safe.
Darren Coote of Norwich salvaged a point with a last- minute equaliser at Walsall to make it 2-2 after earlier strikes from Tony Barras and Darren Wrack for Walsall and Lee Marshall for the visitors.