Early on, the Wildcats (10-4, 3-1 Pac-10) seemed unable to shake off their loss to UCLA on Thursday and needed to rally to take a two-point halftime lead.
But they awoke in time to avoid their first consecutive Pac-10 home losses since 1983-84 and beat the Trojans (11-4, 2-2) for the fifth straight time, ending USC's perfect road record after three straight wins.
Gabe Pruitt made five 3-pointers and had 19 points for USC, which hasn't won in Tucson in 21 games since Jan. 17, 1985. Lodrick Stewart scored 16 and Nick Young had 13 points and 10 rebounds.
Arizona outscored the Trojans 15-6 in the first 4:59 of the second half, but didn't get fired up until Radenovic, who had nine rebounds, picked up his second blocking foul of the half, when Ryan Francis hit him hard on a close call.
Francis ignored the boos and made two free throws to cut USC's deficit to 40-36 with 16:07 left, but it woke up the Wildcats.
Rodgers made a 3-pointer 14 seconds later and Williams dunked and buried a 19-footer in a 25-second span for Arizona's first double-digit lead, 47-36.
The Wildcats led 57-41 after Rodgers capped a 17-5 run with another 3-pointer at the 10:31 mark, and the Trojans never got closer than eight after that.
The Wildcats, matched up with an equally quick and talented foe, were content to fire away from outside most of the first half, getting six of their first eight baskets from the perimeter on the way to an 18-11 lead.
USC responded with a 13-5 surge, taking a 24-23 lead on Keith Wilkinson's 3-pointer, but Adams had a 3-pointer and a steal seconds later, passing to Shakur for a layup that gave the Wildcats a 28-24 lead.
The Trojans made another spurt, and it took Adams' buzzer-beating layup to send Arizona to a 32-30 halftime lead.