Salt Lake (14-10-4) has shut out two consecutive league opponents after a scoreless draw against Philadelphia a week earlier.
United (12-10-5) is winless in four of its last five MLS contests.
After a scoreless opening half, Salt Lake took the lead on Johnson's goal in the fourth minute of the second half. Ned Grabavoy backed a pass to Paulo Jr. on the left side of the penalty area, and Paulo Jr. sent a cross into the 6-yard box that was deflected by DC defender Brandon McDonald. Johnson got his head under the deflected ball and knocked it home.
DC tried to come up with the tying score in the 63rd minute when Dwayne De Rosario kicked a right footer from the center of the box. Salt Lake goalkeeper Nick Rimando came up with the diving save at the bottom corner of the right post.
Salt Lake was fortunate not to yield several first-half goals. D.C. relentlessly attacked and set up several good scoring chances throughout the half.
United forward Chris Pontinus caught Rimando out of position in the 11th minute and tried to slot the ball inside the right post, but his shot across the penalty area just hooked wide of the post.
Salt Lake defender Chris Wingert denied Pontinus on another shot in the 21st minute. Pontinus blasted a right footer from the center of the box and Wingert blocked it to prevent the goal.
D.C. came up empty on another solid chance in the 28th minute. De Rosario kicked from the center of the box and blasted the ball at the left post. It bounced off the post and narrowly missed crossing the line.
Wingert earned drew a yellow card in the 70th minute and will miss Salt Lake's match against Houston on Thursday.
Lightning near the Wasatch Mountains east of Rio Tinto Stadium caused play to be suspended in the 4th minute. The lightning delay lasted 84 minutes before play resumed amid a steady rain.
- Real Salt Lake
- Dwayne De Rosario