It came courtesy of a long clearance from the Forest keeper and Johnson was first to the loose ball heading over Town keeper Paul Gerrard, who should really have claimed the ball.
A dangerous cross by Jamie Clapham in the 21st minute nearly brought the visitors level but Darren Bent saw his header fly over the crossbar.
Long range shots from both sides in the 34th minute tested the keepers but neither Bent’s nor Jim Brennan's effort ended in a goal.
With five minutes to go before the break a mistake by the Ipswich defence found Johnson eight yards out but he flashed his shot across the face of goal.
On the hour mark some neat passing from Ipswich nearly brought the scores level but captain Matt Holland's shot was inches wide.
The resulting counter attack saw Johnson get his 20th of the season and the second of this game, although this was against the run of play.
A misguided pass out of defence from Clapham saw Johnson intercept and produce an unstoppable15 yards out.
At this point Forest took complete control and pressurised a battered Ipswich, who tried in vain to carve out chances.
But in the dying minutes the game came to life.
Ipswich grabbed a late consolation when Holland's long-range free-kick was turned into his own goal by Gareth Williams and seconds before the final whistle David Prutton was shown a second yellow card.