Lyndon word factorization
Pyth, 17 16 bytes

-1 byte thanks to isaacg!

hf!ff&gt;Y&gt;YZUYT+./


Try it online!

Explanation

hf!ff&gt;Y&gt;YZUYT+./
              ./    Take all possible disjoint substring sets of [the input]
             +      plus [the input] itself (for the null string case).
 f                  Filter for only those sets which
  !f        T       for none of the substrings
    f  &gt;YZUY        is there a suffix of the substring
     &gt;Y             lexographically smaller than the substring itself.
h                   Return the first (i.e. the shortest) such set of substrings.