LOS ANGELES(AP) Allen Bradford rushed for a career-high 147 yards and two touchdowns, and No. 4 Southern California avenged its only loss of last season with a 42-36 victory over Oregon State on Saturday night.

Damian Williams returned a fourth-quarter punt 63 yards for a touchdown for the Trojans (6-1, 3-1 Pac-10), whose 27-21 loss to the Beavers last September prevented them from playing for the national title.

Sean Canfield passed for 329 yards and three touchdowns for the Beavers, who shredded USC's vaunted defense for 482 total yards in a back-and-forth offensive game. Jacquizz Rodgers rushed for 113 yards and a score, and also caught a TD pass on an injured ankle as the Beavers (4-3, 2-2) again gave ample trouble to the defending Pac-10 champions.

The Trojans still haven't lost consecutive games to the same opponent since 2002, in the second year of coach Pete Carroll's tenure.

Although the Trojans never trailed, they never got comfortable. Damola Adeniji caught a 15-yard TD pass late in the third quarter to trim USC's lead to 28-23, but the Trojans scored twice in the next four minutes, including Williams' second TD on a punt return this season.

Rodgers' 1-yard TD plunge with 5:41 to play cut USC's lead to 42-36, but the Trojans converted two third downs while running out the clock, with Bradford picking up one last first down with a stiff-arm in the final minute.

Matt Barkley rushed for a score and passed for 202 yards with two TDs and two interceptions in another inconsistent freshman performance. Bradford had a breakout game that included a 43-yard scoring run late in the third quarter.

Ronald Johnson caught six passes for 99 yards and a TD, and Anthony McCoy had an early TD catch before spraining his ankle. Johnson made a handful of big plays in the speedy junior's second game back from a broken collarbone, including a full-stretch dive for a 22-yard TD, along with a 38-yard catch to set up a short TD run by Bradford in the third quarter.

Jacquizz Rodgers, who had 186 yards and two scores last year against USC, talked trash to the Trojans defense from the opening snap, but sat out the second quarter with an injured right ankle. He briefly went to the locker room before returning to the sideline and starting the second half.

His older brother, receiver James Rodgers, had seven catches for 56 yards and a score, but he also was responsible for losing Oregon State's first fumble of the season in the first quarter, setting up the Trojans' first score. The Beavers had won their last seven games after byes, but they haven't won in Los Angeles since 1960.

Joe Halahuni had nine catches for 127 yards, and Justin Kahut kicked three first-half field goals for Oregon State, but also missed a 22-yard attempt.

Stafon Johnson, the USC tailback whose throat was crushed in a weightlifting accident last month, made an emotional return to the Coliseum in the Trojans' pregame meeting before watching the game from the press box. Johnson is recovering swiftly from the near-fatal injury, but isn't expected to play again this season.

Johnson got a standing ovation when he appeared on the Coliseum scoreboard between the first two quarters.