The Sounders (10-3-2) stopped Chicago's unbeaten streak. The Fire (2-4-8) had tied their last two matches.
Neagle, a Federal Way product, scored on a screened shot from the left side to make it 3-1 in the 78th minute.
The Fire's Harry Shipp cut the lead to 3-2 four minutes later on his second goal of the night.
Sounders goalkeeper Stefan Frei stopped Juan Luis Anangono from 12 yards in the 88th minute to preserve the win.
Martins, who had missed an open net in the fifth minute, beat Chicago goalkeeper Sean Johnson in the 31st and 38th minutes. He was ejected for an altercation with the Fire's Benji Joya seconds after Shipp scored his first goal in the 41st minute.
Martins was ejected after wrestling the ball away from Joya and knocking him to the turf. Joya got up holding his jaw as a major shoving match ensued. Martins was the second player ejected.
Chicago's Jhon Kennedy Hurtado was ejected in the 37th minute for going after the ball and Martins with both feet in the air. Martins scored his second goal on the ensuing penalty kick.
Martins' first goal came from 10 yards out after he beat Fire defender Bakary Soumare to a loose ball after a deflection.
Shipp beat Frei for Chicago's first goal about 90 seconds after Martins' successful penalty kick.
This marks the start of the MLS World Cup break. Seattle doesn't play another league game until they face D.C. United on June 28th. The Sounders don't hit the field at home again until July 13th.