Max Wittek took snaps from the first-team center during warmups, was first up when quarterbacks began throwing passes to receivers and again during seven-on-seven drills.
Cody Kessler took the first snap with the offense during a pre-workout drill and also for the final full-squad drill.
So it went Saturday in USC's initial training camp practice, the third-year sophomores alternating opportunities as Coach Lane Kiffin revealed no obvious sign indicating the front-runner to start the Aug. 29 opener at Hawaii.
Wittek, Kessler and freshman Max Browne are competing to replace four-year starter
"We know what's at stake," Kessler said.
The 6-foot-4 Wittek, who started two games last season, has shed about 25 pounds and, at 233 pounds, appears more nimble. On Saturday, he showed a strong arm but also had a pass intercepted.
Kessler, 6-1, 215 pounds, continued to perform with the efficiency he demonstrated during spring practice. He also completed multiple long passes with a deft touch.
The 6-5 Browne appears stronger after an off-season in USC's strength program.
The starter will be determined by who manages situations best and avoids turnovers, Kiffin said.
"We've got a lot of practices and a lot of scrimmages to go, so a lot of information left to get in," he said.
Legitimate training camp quarterback competitions at USC have been rare in the last decade.
Neither Wittek nor Kessler can enjoy the luxury Matt Leinart had in 2003 when coaches named the third-year sophomore as the starter over Matt Cassel at the end of spring practice. Leinart started every game the next three seasons.
In 2008, fourth-year junior Mark Sanchez was atop the depth chart after spring practice. He sat out most of training camp because of a knee injury — enabling Aaron Corp and Mitch Mustain to take snaps. But Sanchez started every game.
In 2009, Corp was No. 1 on the depth chart after perhaps the most efficient spring by a quarterback in USC history. But Corp suffered a leg injury early in training camp, enabling former coach Pete Carroll to install Barkley as a freshman starter. Barkley started all but four games the next four years.
Last season, Wittek started in place of the injured Barkley and passed for 186 yards and a touchdown, with two interceptions, in a 22-13 loss to then-top-ranked Notre Dame.
He finished the season by struggling in a 21-7 Sun Bowl loss to Georgia Tech, completing only 14 of 37 passes for a 107 yards and touchdown, with three passes intercepted.
Wittek sat out about three weeks of off-season workouts because of mononucleosis, but said he is at full strength and feels "10 times more energized" at a lighter weight. He is using his Sun Bowl performance as motivation.
"It gives me more drive to want to get out on the field and show a different final product," he said. "And I'm looking very much forward to that opportunity."
Kessler gained notoriety last season after he was instructed by USC coaches to switch jerseys while playing on special teams in the first half against Colorado. He wore his usual No. 6 in the second half and completed two passes for nine yards.
Kessler's only other play at quarterback, according to USC's media guide, came when he took the final snap in the opener against Hawaii.
A year later, he is competing to take the first snap.
"You've got to seize the moment," Kessler said.