Chicago responded and went close to taking the lead when Harrison Shipp released the run of Quincy Amarikwa. The striker cut the ball back to Florent Sinama-Pongolle, but his low effort was well saved by Bill Hamid.
In the second half, DC doubled their lead when Johnson capitalised on an error from Patrick Ianni, to race into the penalty area and fire an effort past Reynish into the top corner.
The Fire got a goal back when substitute Patrick Nyarko released the run of Shipp with a sublime through pass, and the midfielder slotted the ball under Hamid with a composed finish.
Chicago came within inches of an equaliser in the 74th minute when Amarikwa burst into the area and laid the ball back to Shipp, whose deflected effort trickled against the post before Hamid gathered.
At the other end, DC broke upfield and had the chance to kill the game off when Johnson picked out Nick DeLeon in the box, but his low shot was blocked by the legs of Reynish.
In the dying minutes, Jeff Larentowicz had an excellent opportunity to snatch his side a point, but his left-footed shot from close range was saved by Hamid as United held out for the victory.