Canfield completed 15 of 29 passes but avoided turnovers. He's thrown 13 interceptions this season but none in the past three games. Darrell Catchings had six receptions for 51 yards for the Beavers.
Led by linebacker Derrick Doggett, the Beavers' stout run defense held Stanford to minus-8 yards rushing. The Cardinal entered the game thin at running back, with Anthony Kimble nursing a sore shoulder and Jason Evans out for the season with a torn ACL.
A blocked field goal and three fourth-quarter turnovers ruined Stanford's bid to rally.
The Cardinal trailed 17-6 in the fourth when Doggett blocked Derek Belch's 27-yard field goal try. Then Doggett forced Jeremy Stewart to fumble in the fourth, setting up a Serna 31-yard field goal. Tim Clark picked off Pritchard on the next drive.
Stanford fumbled once more, Serna kicked a 41-yard field goal and Doggett picked off Pritchard to seal the win.
Oregon State flanker James Rodgers set up the first touchdown by taking a handoff from Canfield 51 yards down to the Stanford 2. Canfield found tight end Howard Croom for a score on the next play.
Bernard's 19-yard run set up his 2-yard TD on the next play.
A late-hit penalty salvaged a Stanford drive and Derek Belch made a 44-yard field goal with 2:16 left in the first half to make it 14-3.
Pritchard led the Cardinal down the field just before halftime, hitting Sherman for a 25-yard reception that set up another field goal by Belch from 43.
Serna made a 41-yard field goal early in the third to extend Oregon State's lead to 11.