Order products by lowest product variant
I managed to resolve this using the supersort plugin and using 'defaultPrice' instead of 'price'. Example below:

{% set products = craft.products.type('accommodation').all() %}
{% set order = products|supersort('sortAs', '{{ object.defaultPrice }}') %}

{% for product in order %}

    // Products

{% endfor %}