A regular 9 volt battery has a very short life on most Arduinos and is only really useful for short tests.
There was a 101 update but I suspect that would not help in this situation.
It is clear from your question that the power supplied by the USB is enough to keep it going as it is a constant current / voltage source unlike the battery which drains too quickly.
A better external source such as a LiPo or other rechargeable heavier duty battery would by my first choice.