Edited version: this is a clean-up by taking into consideration the added example provided in the comments section by the author of the OP.
I am suggesting the following function:
foo[l_List] :=
Internal`DeleteTrailingZeros /@
PadRight /@
SortBy[#, Table[#[[xx]], {xx, 1, Min[Dimensions /@ l]}] &] &@
PadRight@l
Now, we define the four lists; two from the OP, the one I had provided as example 3 and the one in the comments by the author of the OP.
list1 = {{1, 2, 4}, {3, 4}, {1, 3}};
list2 = {{1, 2, 3}, {1, 2}, {1}};
list3 = {{1, 2, 4}, {3, 4}, {4, 5}, {1, 3, 7, 8}, {1, 3}};
list4 = {{1}, {1, 2, 4}, {1, 2, 3, 5}};
We act with the function
foo[list1]
foo[list2]
foo[list3]
foo[list4]

Edit: thanks to the comment by @E. Chan-López, there's the shorter version:
foo[l_List] :=
DeleteCases[#, 0] & /@ SortBy[#, Min[Length /@ l] &] &@PadRight@l