TEMPE, Ariz. -- -
Southern California stumbled through its first road test, laboring long enough to allow a beleaguered and battered underdog to hang around.
The Trojans' defense stepped up first. Then Caleb Williams closed the door.
Williams threw for 322 yards and accounted for five touchdowns, Marshawn Lloyd ran for 154 yards and No. 5 Southern California outlasted Arizona State's upset bid with a 42-28 win on Saturday night.
"I thought we stepped up in a tough environment there at the very end and played out best ball in the fourth quarter, which that's what you've got to do," USC coach Lincoln Riley said. "It certainly wasn't our cleanest performance."
Nearly five-touchdown favorites, the high-scoring Trojans (4-0, 2-0 Pac-12) were off-kilter offensively for long stretches, plagued by ill-timed penalties and an early fumble in their own end.
USC had a touchdown negated by a penalty, lost a fumble to set up an Arizona State score and turned it over deep in the Sun Devils' end in the third quarter.
The Trojans' defense tightened while the offense stagnated, coming up with three big sacks - one that led to a fumble by Arizona State quarterback Drew Pyne near midfield. USC kept up the defensive pressure, finishing with seven of its eight sacks in the second half.
"We knew we had to step up and that's what we did," USC edge rusher Jamil Muhammad said.
USC's defense opened the door for the offense.
Following the sack, Williams darted and danced through Arizona State's defense, hitting Brenden Rice for a 29-yard touchdown and a 35-21 lead.
Arizona State pulled within a touchdown on Cam Skattebo's balancing-act 52-yard touchdown, but Williams found Tahj Washington on a 45-yard TD pass to make it 42-28. Williams also hit Rice on a 25-yard TD in the first half and scored on a pair of 1-yard runs.
"It really hard to stop what they do when you combine the talent with good scheme," Arizona State coach Kenny Dillingham said. "There's things our guys can do better."
The Sun Devils (1-3, 0-1) opened up the playbook to keep up with the Trojans, a week after turning it over eight times in their first home shutout loss since 1988.
Arizona State used a variety of trick plays - two on halfback passes - to trail by eight at halftime and pulled within 24-21 on Pyne's 25-yard touchdown pass to Elijah Badger in the third quarter.
Skattebo, who had a 15-yard touchdown run in the first half, gave the Sun Devils a chance with his TD catch midway through the fourth quarter. Williams answered and USC's defense tightened again, ending the upset bid.
"We had a couple of mistakes that kind of bit us toward the end, but I'm pretty happy the way the defense and the offense came together after the last three weeks," Scattebo said.
Scattebo has impressed the Sun Devils with his hard-running style since transferring from Sacramento State transfer.
The 5-foot-10, 225-pound running back proved to be difficult to tackle against USC, repeatedly bouncing off tacklers while running for 111 yards on 20 carries.
Skattebo also showed off his agility on his tightrope TD in the fourth quarter, punted once for 53 yards and even completed two halfback passes - one to Badger on a fake punt that wasn't called from the sideline.
"I'm going to be in trouble tomorrow," he said. "The throw on the fake punt was not supposed to happen. Me and him were in connection in the middle of the play. It wasn't planned before."
USC: The Trojans were expected to run over an injury-riddled team in their first road game. They faced a much stiffer test than expected, but managed to pull out a win.
Arizona State: The Sun Devils were down to their third-string quarterback and were without three key offensive linemen, yet still managed to keep USC within reach. It wasn't a win, but certainly something they can build on in coach Kenny Dillingham's first season.
USC: Plays at No. 19 Colorado next Saturday.
Arizona State: Plays at California next Saturday.
AP college football: https://apnews.com/hub/college-football and https://apnews.com/hub/ap-top-25-college-football-poll