Joining columns from two files, if the key matches

I am trying to join/paste columns from two files for the rows with matching first field. Any help will be appreciated.

Files can not be sorted and may not have all rows in both files.
Thanks.

File1
aaa 111
bbb 222
ccc 333

File2
aaa sss mmmm
ccc kkkk llll
ddd xxx yyy

Want to generate:
aaa 111 sss mmmm (column 2 from file1 and clolumns from file2)
bbb 222 ????? (missing data, identified)
ccc 333 kkkk llll
ddd ???? xxx yyyy (missing column 1 data marked as missing.)

If your version of join(1) supports outer joins (-o 0) then the following should work

$ join -t' ' -e "????" -a 1 -a 2 -o 0,1.2,2.2,2.3 file1 file2
aaa 111 sss mmmm
bbb 222 ???? ????
ccc 333 kkkk llll
ddd ???? xxx yyy
$