Through the first three quarters, all the points for Oregon State and No. 20 Utah came on field goals.
Then things got kind of crazy.
The Beavers pushed the Utes into overtime at 16-all with Trevor Romaine's 49-yard field goal as time expired in regulation. But after the teams traded touchdowns, Romaine missed a 37-yarder and Utah's Devontae Booker ran 19 yards for the game-winning touchdown.
"It became a hard-nosed football game — kind of an unusual style of game in this era," Oregon State coach Mike Riley said.
Booker finished with 229 yards rushing and three touchdowns to give Utah a 29-23 victory Thursday night.
He ran for a 15-yard score in the first overtime to put the Utes in front 23-16. The Beavers (4-2, 1-2 Pac-12) answered with Sean Mannion's 2-yard touchdown pass to Jordan Villamin on fourth down to force another period.
Romaine's 37-yarder went wide right, giving the ball back to Utah (5-1, 2-1) for the game-ending drive.
Afterward, Romaine said he wasn't nervous. His hips just weren't positioned correctly when he struck the ball.
"I should have made it," he said with a shrug.
It was Booker's third straight game with more than 150 yards rushing for the Utes, off to their best start since winning their first eight games in 2010.
Mannion threw a 72-yard touchdown pass to Villamin early in the fourth quarter to put Oregon State in front 13-9.
But the Utes mounted a comeback and Booker ran 53 yards to the Oregon State 6. On fourth down, he plunged into the end zone with 4:20 left.
Romaine's 49-yard kick sent the game to overtime.
Mannion threw for 272 yards and two touchdowns. He surpassed former USC quarterback Carson Palmer (11,818 yards) for second on the Pac-12's career list for yards passing with 12,014. Former Trojan Matt Barkley holds the record with 12,327.
"I think the bottom line as an offense was that we need to put more drives together," Mannion said. "We did, however, make a lot of good plays and did some really good things out there. We just have to be able to string plays together."
Kendal Thompson started at quarterback for Utah, ending more than a week of speculation about who coach Kyle Whittingham would go with in Corvallis. The depth chart going into the game listed Travis Wilson "or" Thompson, a transfer from Oklahoma.
Wilson started the second half.
The 6-foot-7 Wilson had started all five previous games for Utah, throwing for 788 yards and seven touchdowns. But he lasted just three series in Utah's last game, a 30-28 victory over UCLA, before he was replaced by Thompson.
Thompson, more of a dual threat than Wilson, completed four of eight passes for 17 yards in the first half. He also ran for 20 yards.
Andy Phillips hit field goals from 38 and 43 yards to give Utah a 6-0 lead in the first quarter.
The Beavers narrowed it with Romaine's 37-yard field goal early in the second. Oregon State tied it as time ran out in the half with Romaine's 45-yard kick. Romaine missed his first attempt, but Utah had called a timeout, and he made the second.
Oregon State was hurt late in the first half when running back Storm Woods injured his right knee following a 13-yard run. He did not return.
Woods, who went into the game as the team's second-leading rusher, just a yard behind Terron Ward, ran for 46 yards on 13 carries before he got hurt.
The Beavers sustained another blow in the second half when they lost receiver Richard Mullaney to a left elbow injury. Riley said the injury was serious and Mullaney might miss the rest of the season.
The Utes pulled back ahead on Phillips' 46-yard field goal in the third quarter. Phillips hit the go-ahead field goal with 34 seconds remaining in Utah's win over then-No. 8 UCLA at the Rose Bowl on Oct. 4, the Utes' last outing.
Oregon State was also coming off a bye following a 36-31 victory at Colorado.
Late in the third quarter, Mannion hit Victor Bolden with a 52-yard pass, but Oregon State's drive stalled on the 34-yard line when the Beavers went for it on fourth-and-4.
On the Beavers' next series, Mannion found Villamin in the end zone.
Oregon State will need to regroup quickly. Next week, the Beavers visit Stanford.
"No one is going to feel sad for us," safety Ryan Murphy said about the hard-fought loss. "We have Stanford next week. That's who we are looking forward to playing."