The calculations required are easier to perform than explain, so I'll start with some examples.
Ex 1 In terms of scoring offense, Alabama averaged 37.6 points per game against 12 FBS opponents. There were 97 games where both teams also played Alabama and in those games the average points/team was 27, so Alabama scored about 39% more than its opponents gave up on average to each other. That says Alabama's offense is better than its opponents defenses, but what if those defenses aren't that good? Well, those teams also plaed 43 FBS teams besides Alabama, and those teams were held to an average of 21.7 points, about 20% lower than what they allowed to each other. If that were a team stat, it would it would be one of the 25 best.
Ex 2 In terms of scoring defense, Northern Illinois allowed only 20 points per game, about 29% better than their opponents allowed against each other. But the other 43 teams the Huskies' opponents played held the NIU's opponents to 20.1 points - abut the same as the Huskies did. So maybe the opponents' offenses just weren't that good.
We can quantify the analysis as follows - for each stat:
%CHstat(Team,OvO) = 100 × (statteam - statOvO) ÷ statOvO
%CHstat(OOvO,OvO) = 100 × (statOOvO - statOvO) ÷ statOvO
For offense-oriented stats positive results for (1.) and negative results for (2.) are better, and for defense-oriented stats negative results for (1.) and positive results for (2.) are better. So in either case for each stat (1.) − (2.) can be used to order the teams by stat. Sort on teams' values in descending order for offensive stats, and ascending order for defensive stats.
Examples:
The same calculations can be performed for your favorite statistic.