Sí le puedes margen. El problema real es que tienes que quitarle el ancho al elemento
body
.
Es una cuestión de lógica. Si mide 100% y le añades margen, ocupará el 100% más el margen que le pongas.
Lo lógico es no ponerle ancho, así, siendo un elemento en bloque, ocupará todo el espacio disponible (que no es, técnicamente, el 100%, pero sí en la práctica) porque el ancho por defecto de elementos en bloque es
auto
.