M-! runs the command shell-command. This will prompt you for the actual command to run in the minibuffer, which then runs. You can run it in the background by putting a & at the end, just as you would in a terminal. alternatively, you can use M-&, async-shell-command.
The output from the shell command will be placed in a temporary buffer. If you want it inserted in the current buffer, use a prefix argument. (i.e., C-u M-!.
A very useful related function is shell-command-on-region, bound to M-| by default. This will run a shell command on the contents of the region. The output will go in a temporary buffer, or, as with M-!, if you use a prefix argument the selected region will be replaced by the output of the shell command.
See (emacs) Single Shell in the manual for more details.