I handled this with a pre_get_posts hook (thanks, @Milo), passing in the URL part that corresponds to the slug I need. Hope this helps someone down the road. Improvements are welcome. Thanks.
function filter_team_news_archives_by_sport_taxonomy($query) {
if (is_post_type_archive('team-news') && $query->is_main_query()){
// Get $sport_slug from URL -- https://stackoverflow.com/a/36002190/4107296
$url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$parsed = parse_url( $url );
$chunks = explode( "https://wordpress.stackexchange.com/", trim($parsed['path'],"https://wordpress.stackexchange.com/") );
// if the URL is in this format: /athletics/team/[sport-slug]/news
if ($chunks[0] === 'athletics' && $chunks[1] === 'team' && $chunks[3] === 'news') {
$sport_slug = $chunks[2];
$query->set('tax_query', array(array(
'taxonomy' => 'sport',
'field' => 'slug',
'terms' => $sport_slug,
)));
}
}
}
add_action('pre_get_posts', 'filter_team_news_archives_by_sport_taxonomy');