The nohup command is not a builtina keyword; it can't be given a subshell as the command to run, and instead it requires an actual runnable command:
nohup bash -c 'sleep 120; echo "job done"' &
Bash is giving you a syntax error because it thinks you're trying to declare a function called "nohup", which is the only case where a bare parenthesis can appear in the second word on the command line:
nohup () { ... ; }
The error message is telling you (obscurely) that it expected to see the right parenthesis there and not the word "sleep".