list entries by category, including uncategorized entries
You could do something like this:

{# Fetch all entries in postDate and category/structure order #}
{%  set entries = craft.entries().section('companies').order('dateCreated DESC').all() | multisort(e =&gt; e.yourCategoryField.one().lft ?? 1000) %}

{# Group entries by categories and set a group name for non-categorised one #}
{% set allEntriesByCat = entries|group(e =&gt; e.yourCategoryField[0] ?? 'The non categorised one') %}

    {% for groupName, entries in allEntriesByCat  %}
        &lt;h1 class="text-2xl"&gt;{{ groupName }}&lt;/h1&gt;
        &lt;hr&gt;
        {% for entry in entries %}
            {{ entry.title }}&lt;br&gt;
        {% endfor %}
    {% endfor %}

{% endblock %}


Change yourCategoryField to your own field handle, of course. The Order of your sponsorship levels ({{ groupName }}) is the one you will define by drag/dropping in your Control Panel → Categories.

Note that this won't show an empty sponsorship level if there is no company attached to it.