Arizona (16-6, 6-3 Pac-12) has won five of its past six and was in full control for most of this one until the final minutes.
The Wildcats led by as many as 20 during the second half, pushing to a 63-43 advantage with 12:55 remaining. USC slowly chipped away and pulled within 83-80 with five seconds left on a 3-pointer by Jonah Mathews, but Mannion responded with a pair of free throws to stop the rally.
Mannion scored 12 of his points on free throws. Nnaji grabbed 11 rebounds.
USC (17-6, 6-4) has lost back-to-back games for the first time this season. The Trojans were led by Onyeka Okongwu with 23 points. Daniel Utomi added 22. USC lost despite shooting 28 of 56 (50%) from the field.
Two of USC's usual starters - Mathews and forward Nick Rakocevic - didn't start the game because of what the school called a ''violation of team rules.'' They both checked in at the first timeout with 13:37 left in the first half with USC trailing 12-9.
Their presence on the court didn't help much. Arizona led 43-33 at halftime and was led by Green's 12 points, including three impressive dunks. USC was led by Okongwu's 13 points before the break.
USC: The Trojans have hit a small skid with two straight lopsided losses in conference play. It's still a physical team that could finish near the top of the Pac-12 and should be helped by playing five of its next eight games at home.
Arizona: The Wildcats are building momentum as the regular season hits its final four weeks. Green, Mannion and Nnaji are playing like veterans and the team's role players are providing great all-around minutes. The win was also the 400th of coach Sean Miller's career.
USC travels to face Arizona on Saturday.