The Ducks (10-2, 7-2) will face No. 16 Utah for the conference championship in Las Vegas on Friday.
Oregon was coming off a 38-7 loss last Saturday against the Utes, which dropped them from No. 3 in the College Football Playoff rankings to No. 11 and out of contention for a national title.
Oregon extended its home winning streak to 19 games, including 15 conference games.
Washington State, which defeated Washington 40-13 in the Apple Cup on Friday night, needed the Beavers (7-5, 5-4) to beat the Ducks to win the division.
Devon Williams had six catches for 110 yards and a touchdown for Oregon, which will play for the league title for the third consecutive season. Travis Dye ran for 99 yards and two scores.
B.J. Baylor ran for 59 yards for the Beavers, who are bowl eligible for the first time since 2013. Baylor came into the game leading the Pac-12 and at No. 10 in the nation with an average of 109.1 yards rushing per game.
Oregon State’s Chance Nolan threw for 308 yards and a pair of touchdowns. He ran for another in the waning moments.
The game was chippy, with several shoving matches breaking out. Oregon state wide receiver Tre’Shaun Harrison was ejected late.
Dye rushed for a 20-yard touchdown on Oregon’s opening drive. The Ducks doubled the lead on Brown’s 50-yard scoring pass to Williams.
Everett Hayes kicked a 38-yard field goal for the Beavers just before the end of the first quarter.
Oregon padded its lead with a 36-yard field goal from Camden Lewis. Brown added a 10-yard keeper to make it 24-3 at halftime.
Nolan hit Luke Musgrave with a 4-yard scoring pass, narrowing the gap to 24-9 after the 2-point attempt failed.
Brown found Kris Hutson with a 7-yard scoring pass early in the fourth quarter to extend Oregon’s lead, but Baylor scored on a 4-yard run to make it 31-15 after another failed 2-point try.
The Beavers recovered an onside kick, and on the ensuing drive Nolan found Trevon Bradford with a 15-yard scoring pass to make it a 10-point game with 8:28 to go. Oregon answered with Dye’s 1-yard TD.
It was the 125th anniversary of the rivalry game between the Oregon schools. The game was called the Civil War until last year, when both schools decided to drop the moniker.
Defensive end Kayvon Thibodeaux was honored along with the team’s seniors before the game. Thibodeaux has not yet used all of his eligibility, but is expected to be a top pick in the NFL draft next spring.
Dye has played four seasons for the Ducks, but the pandemic-shortened season granted the running back an extra year of eligibility.
He did not take part in the senior festivities — but earlier this week he cautioned not to read too much into it because he hasn’t decided about his plans for next year.
Oregon State: The Beavers won last year’s game in Corvallis 41-38. Oregon State hasn’t won in Eugene since 2007.
Oregon: The Ducks averaged 39 points in their six games at home, the best in the Pac-12. Oregon is holding opponents to an average of 20 points at home. … Dye topped 1,000 yards rushing for the season. … Linebacker Noah Sewell was hurt in the second half and did not return. It appeared to be a shoulder injury.
The Beavers await a bowl invitation.
The Ducks meet the Utes for the Pac-12 title on Friday.