Ohio State answered with a 26-yard touchdown pass from C.J. Stroud to Jaxon Smith-Njigba, who got behind the defense from the slot and brought in a well-placed ball by the redshirt freshman.
Oregon wasted little time on its next possession, though, as the Ducks went 75 yards in less than three minutes. Travis Dye pushed the lead back to 14 points with a 5-yard run untouched around left end, the third time Oregon scored in such a manner.
After Ohio State turned the ball over on downs for the third time, the OSU defense finally got a stop late in the third quarter.
The offense made that worthwhile by driving 73 yards for a touchdown.
TreVeyon Henderson went over from two yards out to pull the Buckeyes within a touchdown at 28-21 with 12:54 left. It was set up by a crucial 23-yard pass from Stroud to Garrett Wilson to convert a fourth-and-3.
This time, the Ohio State defense could not answer the bell.
Oregon went 74 yards in six plays, needing just 2:36 to extend the lead back to 14 points. Brown capped the drive with a 14-yard touchdown pass to Moliki Matavao, who was left wide open by a defense that looked lost most of the day.
The Buckeye offense wasn’t done, though.
Facing a do-or-die fourth down with eight minutes left, Stroud found Smith-Njigba wide open on a crossing route. He brought it in and outran the defense the rest of the way to the end zone for a 15-yard touchdown to make it 35-28 with 7:55 to go.
The Horseshoe came to life for the first time all day with the defense on the field as the Buckeyes held Dye to a 3-yard run on first down then forced an incomplete pass on second.
Oregon was called for a false start on the ensuing play, and then the Ducks called timeout to talk things over with 7:20 on the clock.
Javontae Jean-Baptiste rushed Brown, who had no one open and rushed a throw that fell incomplete.
The Buckeyes’ ensuing drive started promisingly with a 22-yard pass from Stroud to Smith-Njigba, but it stalled after a holding penalty and the Buckeyes had to punt it back to the Ducks.
But Ohio State’s defense held firm again, forcing a second consecutive three-and-out.
Again, the Buckeyes were unable to do anything with it, though.
After Stroud took a sack near midfield, he was intercepted on third-and-18 two plays later to end Ohio State’s last threat.
Ohio State had a chance for one more stop but couldn’t deliver. Brown easily converted a third-and-3 with a short pass to DJ Johnson, who was wide open off a play-action fake -- as Duck receivers were most of the day.
Oregon did eventually punt, but the Buckeyes got the ball back with only 20 seconds left at their own 11-yard line.
Stroud completed a 12-yard pass on first down then was sacked to end the game.
Ohio State lost at home for the first time since early 2017 (31-17 to Oklahoma) and in the regular season for the first time since late 2018 (at Purdue 49-20).
FIRST HALF RECAP
Oregon averaged 6.6 yards per play but leads No. 3 Ohio State just 14-7 at halftime of the top 25 showdown at Ohio Stadium.
12th-ranked Oregon struck first with a 99-yard touchdown drive that started late in the first quarter.
CJ Verdell capped it with a 14-yard touchdown run around left end, one of several plays along the way in which the Buckeyes were outflanked and caught chasing the ball.
Quarterback Anthony Brown completed three of four passes for 49 yards and set up the touchdown run with an 18-yard keeper.
Ohio State answered with a 27-yard pass from C.J. Stroud to Garrett Wilson, who got behind an Oregon defender who was still looking at his wristband for the play call when Wilson ran by him.
That capped a five-play, 70-yard drive that also included a pair of long pass plays from Stroud to Jaxon Smith-Njigba.
The Ducks went back on top quickly with another 14-yard touchdown run by Verdell, who easily gained the edge and outran Ohio State safety Bryson Shaw to the goal line. That capped a seven-play, 65-yard drive for the Ducks.
Ohio State actually finished the first half with a yardage advantage of 271-245, though that was aided by a 62-yard drive in the final seconds that ended at the Oregon 18 when time ran out.
Early on, the Buckeyes drove to the Oregon 31 and 34 but came away with no points, turning the ball over on downs then opting for a pooch punt.
Stroud threw for 190 yards in the first half while Brown threw for 143 yards and ran for another 33.