The win pulled the Fire (15-8-5) within a point of Eastern Conference leader Sporting Kansas City. Chicago has 50 points and third-place New York is right behind with 49.
Montreal (12-15-3), playing its first match in two weeks, dropped its second straight after winning five in a row.
Time may be running out on the Impact's quest for an Eastern Conference playoff berth. They're three points out of the final playoff berth with four matches left to play.
"We needed these three points tonight," said Montreal goalkeeper Troy Perkins. "This is not a good situation. We've got to play one game at a time, and hope some teams do us some favours."
Montreal's five-match winning streak — its longest of the season and the only one of more than two matches — came to an end in Columbus on Sept. 1, when the Crew rallied to win in stoppage time.
A two-week layoff followed, and while the Impact looked sharp at the start of each half Saturday night, the Fire came on to square the match in the first half before winning it in the second.
The Impact have made a habit of squandering road leads. They're 2-5-1 this season when scoring the first goal on the road.
"We're not out of it," Montreal coach Jesse Marsch said. "Mathematically, we're still alive."
The second-half collapse started when Alex took a pass from Fernandez, split a pair of defenders and beat Perkins to break a 1-1 tie in the 61st minute. The Brazilian sent his shot over Perkins and high to the far corner of the net.
"This game turned when they got the second goal," midfielder Davy Arnaud said. "Until that point, we were pretty good. We'd had good chances. They get the second goal, and at that point, it becomes really tough. Scoring goals on the road is not easy."
Montreal defender Allesandro Nesta's misplay then allowed Fernandez to beat Perkins from 15 yards for a 3-1 advantage in the 80th minute. Nesta was out of the game less than a minute later.
"Nothing much to say about that," Marsch said. "All year long, I've been trying to figure out how to eliminate mistakes."
Marco Di Vaio gave Montreal a 1-0 lead in the 20th, his fourth straight match with a goal. He took defender Hassoun Camera's headed centring pass, flicked the ball forward and scored from about 12 yards out. Goalkeeper Sean Johnson fell to his right but could only get a fingertip on the ball.
Sherjill MacDonald had tied the match with a nifty header in the 34th, redirecting a pass from Jalil Anibaba into the lower left corner of the net.
"We couldn't sustain ourselves," Marsch said. "I do think there were some potential penalty calls, but you're not going to get those on the road."