The Canadian side came under late pressure from the hosts, but held on for an important victory and regional bragging rights.
Portland got the scoring started early, taking the lead in just the third minute. Continuing his recent good form, Maximiliano Urruti capitalized with the space afforded him by the Vancouver defense, striking a shot from the outside of the area into the far corner of David Ousted's net.
The lead would last barely a quarter of an hour. Diego Chara was judged to have fouled Erik Hurtado in the penalty area, and Pedro Morales dispatched the ensuing spot kick.
The Whitecaps were awarded another penalty in the 26th minute. Morales drew the call this time, going down when clipped by Jorge Villafana, before converting the chance from 12 yards.
Vancouver made it 3-1 on the stroke of halftime. Hurtado turned a low cross towards the net, and Donovan Ricketts made a save, but the Whitecaps forward was able to tap home the rebound to send his team in 3-1 at the interval.
It didn't take long for the visitors to get on the board after the break either. Jordan Harvey collected a low Morales out-swinging cross behind the box and drove it low into the far corner.
The Timbers pulled one back in the 77th minute. Gaston Fernandez put his head on the end of a long Diego Valeri cross to make it 4-2.
Will Johnson brought it back to 4-3 with a fine finish in the 85th minute. The Timbers captain volleyed home a shot set up by a skillful display of bouncing-ball control from substitute Fenando Adi.
The result extends Vancouver's undefeated streak to six games, and the Whitecaps move to fourth in the West with a 5-2-5 record. Portland remains eighth, with a 3-4-7 record.