The Cobblers midfielder crashed home the winner deep into stoppage time to earn a deserved success against the long-time leaders, who looked to have earned a point through Billy Sharp, who cancelled out Alex Pearce's opener.
The Northampton defender shot his side into a 16th-minute lead, converting a David Hunt corner at the near post.
Kenny Deuchar should have doubled Northampton's lead in the 24th minute but he mis-kicked from close range from a Simon Cox cross.
Deuchar then headed over and saw Steve Foster clear another header off the line as Northampton continued to dominate.
Sharp produced Scunthorpe's only real chance of the half, his shot on the turn going over the bar as his side struggled to make an impression.
Scunthorpe keeper Joe Murphy made a superb save seven minutes after the re-start, tipping over a Cox header, and then had to be alert to keep out a fierce free-kick from Johnson.
Sharp equalised in the 57th minute, capitalising on a rare moment of hesitancy in the Northampton defence to score at the near post - his 28th goal of the season.
But it was Northampton that went in search of a winner late on and Murphy pulled off another great save to keep out an Andy Holt header.
Deuchar missed another great chance, heading wide, before some concerted pressure from Northampton ended with Johnson crashing home the winner only to be dismissed for a second booking following his celebration.