Edit: many thanks to @JasonB. for the comment. It has been incorporated below
You first command can be written more simply as:
Tuples[Range@3, 2]
You can check their equivalence either by using SameQ
SameQ[Tuples[Range@3, 2], Flatten[Outer[List, Range[3], Range[3]], 1]]
or the undocumented function
LinearAlgebra`Private`ZeroArrayQ[
Tuples[Range@3, 2] - Flatten[Outer[List, Range[3], Range[3]], 1]]
both of which yield

To delete the values you don't want to see
Tuples[Range@3, 2] // DeleteDuplicatesBy[Sort]
And we check against the result you quoted in two ways. One is
SameQ[(Tuples[Range@3, 2] //
DeleteDuplicatesBy[Sort]) - {{1, 1}, {1, 2}, {1, 3}, {2, 2}, {2,
3}, {3, 3}}]
and the other
LinearAlgebra`Private`ZeroArrayQ[(Tuples[Range@3, 2] //
DeleteDuplicatesBy[Sort]) - {{1, 1}, {1, 2}, {1, 3}, {2, 2}, {2,
3}, {3, 3}}]
both of which yield
