I'm afraid you are not making a lot of sense.
If mean by "provisioning a VM" consists of:
allocating the resources to run the virtual, and
booting it from a boot image or from an installation media.
These things are the responsibility of your virtualization platform; e.g. xen, kvm, vmware or hyper-v. (Vagrant is a particular case that is built on top of other virtualization providers ... such as the above.)
On the other hand, once you have gotten your virtual machine booted into Linux (or whatever), you can use Chef for "provisioning" (if you want to call it that) other software.
So to try to answer your question:
The idea is I have a running VM, I want to install chef-solo on it and run the cookbooks on "this machine" only. Is this possible? Or do I need to provision a VM?
(It sounds like you mean "provisioning" in the first sense; see previous.)
The answer is that if you have an existing VM you don't need to "provision" another VM in order to use Chef (in either Solo or Server mode). You can install Chef on your existing VM, copy your cookbooks from somewhere, and then use "chef-solo" to run them.
On the other hand, a Vagrant VM is really a transitory thing. It is useful for doing experiments / testing / trying things out ... but it is not designed for building production systems. So in that sense, if your "existing VM" is a Vagrant instance, then you may indeed need to provision a new VM if you are going to build a system "for real". But that's not because of Chef! On the contrary, Chef works just fine on Vagrant.