The chef provisioner which comes as part of vagrant does indeed install chef on the target VM. To say that vagrant is not doing this is splitting hairs.
It's generally better to have a shell script install your provisioning tool, or use a box that already has it installed, than depending on Vagrant to do anything for you.
Here's a simple example: https://github.com/puphpet/puphpet/blob/master/archive/puphp...
Otherwise, another option is to either use prebuilt Vagrant boxes with your CM tool already installed, or build your own using Packer.