Caleb Williams completed 20 of 31 passes for 322 yards and three touchdowns, including two in the fourth quarter, as fifth-ranked USC held off Arizona State 42-28 on Saturday in Tempe, Arizona.USC (4-0, 2-0 Pac-12) clung to a 27-21 lead until Williams evaded would-be tacklers and found Brenden Rice for a 29-yard touchdown pass with 10:31 remaining in the game.It was Rice’s second scoring catch of the night. The first covered 43 yards from Williams late in the first quarter. Rice led the Trojans with 133 yards on seven catches.Williams struck again on USC’s next fourth-quarter possession, answering Cam Skattebo’s 52-yard touchdown catch for Arizona State with a 45-yard scoring pass to Tahj Washington. The play effectively ended any hopes of an Arizona State upset after the Sun Devils hung tough most of the way.Arizona State (1-3, 0-1) struggled through its nonconference schedule, coming into its conference opener on Saturday off a shutout loss to Fresno State. The 28 points the Sun Devils scored against USC marked a season high, with Skattebo’s 111 rushing yards and 79 receiving yards setting the tone.Skattebo scored on a 15-yard carry in the first quarter, set up when Tate Romney recovered MarShawn Lloyd’s fumble deep in USC territory.