An own goal in the 52nd minute proved to be the winner for the Timbers (3-5-3), who had played to scoreless draws in their last two matches.
''Maybe it wasn't pretty at times, but it was the three points that we needed,'' Timbers striker Kris Boyd said.
Jalil Anibaba scored the lone goal for the Fire (4-3-3), stopping a three-game unbeaten streak. The loss also snapped a two-game winning streak on the road for Chicago.
The Timbers were coming off a 0-0 draw at Houston on Tuesday. That followed a scoreless result at home against the Columbus Crew on May 5 and a 2-0 shutout by Montreal the week before.
The victory pulled Portland ahead of the struggling Los Angeles Galaxy for last place in the Western Conference.
Brunner picked up the loose ball after Boyd's flailing bicycle kick off a header from Hanyer Mosquera, firing it past Fire goalkeeper Sean Johnson in the early going. It was the first goal by a Timbers player in the team's last 446 minutes of play.
Going into the match, the Timbers were scoreless in 321 minutes - the longest drought in the MLS this season. Portland's last score was an own goal against Sporting KC on April 21. The last Timbers player to score was Kris Boyd on April 14 in a 3-1 loss at the Los Angeles Galaxy.
''You set the tone when you score the first goal, and that's what we wanted to do,'' Brunner said.
Chicago's Pavel Pardo was unguarded when he fired a shot at Timbers goalkeeper Troy Perkins, who leaped and grabbed it out of the air for a spectacular save in the 37th minute.
But Perkins couldn't get to Anibaba's rip into the corner two minutes later to tie it at 1. That ended Perkins' streak of 377 minutes without allowing a goal.
The match got chippy as the first half wound down, with Chicago's Patrick Nyarko and Portland's Mike Chabala getting into a shoving match that resulted in yellow cards for both players.
The Timbers went ahead on the own goal that came off the knee of Fire midfielder Logan Pause after Sal Zizzo's corner kick deflected off Boyd.
''It's a huge win,'' Perkins said. ''It puts us real close to being in the middle of the pack. A couple of more results go our way and we're right in there.''
The Fire continued to deal with injuries on their back line, with Arne Friedrich down with a right hamstring injury and Cory Gibbs out for an extended period after a meniscus tear in his right knee.
Portland was without captain Jack Jewsbury because of a pelvic strain. Midfielder Diego Chara wore the captain's armband against the Fire.
Timbers defenseman Futty Danso was serving a one-game suspension imposed by Major League Soccer for striking Dynamo forward Calen Carr across the head Tuesday.
- Portland Timbers
- Chicago Fire
- Eric Brunner