Dashawn Davis was able to force overtime Thursday night with some heroics late, but he couldn’t save the Oregon State Beavers twice.

A little rub screen and a fall-away triple from the corner as the clock salted away was too long and No. 16 USC survived, staving off the upset-minded Beavers and avoiding an embarrassing loss on the road, 94-91.

Missing lead guard Boogie Ellis, USC got 23 points and 10 boards from Drew Peterson as well as 19 points and 10 boards from Isaiah Mobley. The stars for the Trojans stepped up. That duo alone scored 13 of the Trojans’ 19 points across the two overtime periods.

But it was USC’s defense that let it down.

A seven-point halftime lead was quickly erased to start the second half. Oregon State scored seven unanswered over the first 1:43 of the second. A triple from Ethan Anderson stopped the slide, but four quick points in 18 seconds put the Beavers on top by one.

After Oregon State went up by four with 15:08 to play, USC ripped off a 12-2 run to go back up by six. Five straight from Oregon State was then met by six straight from USC. Back and forth we went.

Then Beaver guard Dashawn Davis took over.

He scored the last 19 points in regulation for Oregon State, as USC was helpless to try and stop him.

Davis got going with a pull-up in the painted area and then slammed home another two points off the break to bring Oregon State within three points with 5:41 to play. Davis matched the Trojans point for point down the stretch as USC was unable to answer made shots on the offensive end with stops on the defensive end and seemingly unwilling to send a double at Davis.

With 3.3 seconds to play, Davis buried a straight-away triple to tie the game at 75-all. He walked into the 3 over the smaller Anderson. USC curiously opted not to foul up by three knowing that Davis was hot or try and force the ball out of his hands.

In the first overtime period, USC again chose not to double Davis and let him rest on defense. He opened the scoring with a jumpshot and then got another to fall with 19 seconds on the clock to tie the game at 83-all, forcing a second overtime.

But USC hung tough in the final frame. Max Agbonkpolo—who finished with 16 points for the Trojans—switched onto Davis and was able to use his length to bother the already-exhausted Beaver guard. He got a stepback jumper to fall with 2:32 to play, but missed each of his last three shots.

Davis finished with a career-high 31 points and seven assists. Jarod Lucas added 18 points on 5-of-6 shooting from deep for the Beavers, who shot 54% from the field and 50% from 3.

But USC won the hustle points. The Trojans were plus-10 on the boards—including 16 offensive rebounds that turned into 16 second-chance points—while blocking five Beaver shots and forcing 18 turnovers. Perhaps the most encouraging piece of the evening from the Trojan perspective: the foul stripe.

USC, which entered the game ranked 342nd in free throw shooting on the season, made 21 of its 25 attempts from the charity stripe. And it made 17 of its 20 free throws in the second half and overtime. Sometimes you have to do the little things to win your clunkers, and USC certainly did that.

The Trojans (24-4, 13-4 Pac-12) have now won five straight, and they’ll look to keep it rolling against Oregon on Saturday a 7 p.m. PT on ESPN2. Oregon State (3-23, 1-15 Pac-12) will host No. 12 UCLA on Saturday at 1 p.m. PT on CBS.