The Fire (5-3-3) won for the third time in five matches to remain in fourth place in the Eastern Conference.
Defender Matt Hedges scored in the 41st minute to put FC Dallas (3-7-4) on the board first. Dallas extended its winless streak to eight matches (0-5-3) and remained winless on the road (0-5-1).
Grazzini tied the score in the 45th minute, lofting a 25-yard left-footed shot over Dallas goalkeeper Kevin Hartman's right shoulder.
Johnson stopped Blas Perez's penalty kick in the 52nd minute, diving to his right to get a hand on the low shot. The attempt was ordered when Fire forward Dominic Oduro tripped Bruno Guarda from behind near the goal line.
Pappa got the tiebreaker in the 63rd on rebound off a penalty kick by Grazzini. Pappa was three steps into the penalty area before Grazzini launched his kick, but no infraction was detected by referee Hilario Grajeda, and Pappa converted the rebound with goalkeeper Kevin Hartman on the turf. The penalty kick resulted from Dallas defender Zach Loyd pulling Pappa down as they chased a loose ball into the penalty area.