Related: How to remove "noise" from GCC/clang assembly output?: lots of ways to make compiler asm output easier to read.
-Wa,xyz=FILE makes an extra output file alongside the normal output.  It's orthogonal to -save-temps.  If you want it to go to a file, you do need an extra output filename on the command line.
e.g. in a Makefile pattern rule:
%.o : %.c
        $(CC) -c  $(CFLAGS) $(CPPFLAGS) -Wa,-adhln=$*.lst $< -o $@
Put that in a file called Makefile (with the indent being a real TAB, not spaces), then you can:
$ CFLAGS='-O3 -g -fverbose-asm' make rnd10.o
cc -c  -O3 -g -fverbose-asm  -Wa,-adhln=rnd10.lst rnd10.c -o rnd10.o
$ ll rnd10.*
-rw-rw-r-- 1 peter peter 912 Mar  3  2016 rnd10.c
-rw-rw-r-- 1 peter peter 25K Sep  6 08:23 rnd10.lst
-rw-rw-r-- 1 peter peter 12K Sep  6 08:23 rnd10.o
So both the .o and the listing were created by the same command.  If you used -save-temps, there's also be the preprocessed source, and the actual .s that was fed to the assembler, but there's probably not much point in saving those and a listing at the same time.  (I chose .lst because it's not in a format that will assemble)
You may be able to get away with just adding -Wa,-adhln=$*.lst to your CFLAGS, instead of overriding the pattern rule.  This will still only work for build systems that use Make, not alternatives that don't ultimately generate a Makefile (e.g. scons), because the $* expansion to the stem of the pattern rule is specific to Make.  It also only works for Make pattern rules, not explicit foo.o : foo.c foo.h style rules.
e.g.
$ rm Makefile
$ CFLAGS='-O3 -g -fverbose-asm -Wa,-adhln=$*.lst' make rnd10.o
cc -O3 -g -fverbose-asm -Wa,-adhln=rnd10.lst   -c -o rnd10.o rnd10.c
Fun fact: Make doesn't even work with spaces in filenames, but you can protect from shell expansion of anything else (like foo$(echo)_weirdname.c) with single quotes in the build command part of the rule, and in CFLAGS.  e.g. CFLAGS="-O3 -g "\'-Wa,-adhln=\$\*.lst\' make -B 'foo$(echo)weirdfil\\.o'