I did something similar a few years ago. Check that post for some details on my setup as of then. I was pretty happy with the results. Updating GRUB was a mess, though, because I wanted to be able to boot Linux both in VM on Windows host or directly from bare metal. If you want a typical P2V, things are a bit easier.
I went for Windows as host and Linux as guest because Windows was my daily driver at the time. Today I'd consider doing this the other way, but I don't have any practical experience with this approach, so I won't focus on it in this answer. If you want to use Windows for gaming etc., then make it a host - PCI passthrough support is very limited in VirtualBox, it has unusual hardware requirements and you'd need a second GPU + second screen. Why VirtualBox: no specific reasons, I was familiar with it.
VirtualBox supports mapping physical disk partitions to VM. Please note that this feature is experimental. To my knowledge it hasn't changed for years, so it's reasonably stable, but be careful: you have to recreate the VMDK file after each change in partition boundaries, otherwise the VM will trash your partitions (not cool).
Once you have the disk mapped in a VMDK file, you want to create a separate /boot partition - probably on a virtual disk stored on host's partition - about 300 MB in size. You don't need an EFI System Partition, because VBox's support for EFI is... well, not satisfying, so you want to boot through MBR. So attach this small virtual disk as the first one and physical VMDK you've created as a second one.
Boot VM from Linux ISO and chroot into your P2V installation. Move /boot to the new partition: a simple rsync of its contents + update in /etc/fstab will do the trick. Install GRUB2 into MBR of the small disk. Don't remove /boot from the original partition yet, you want to purge GRUB from host first. Boot host from Windows ISO and press Shift+F10, Command Prompt will pop up. bootrec /fixboot + bootrec /fixmbr should remove it from MBR setup, for UEFI you'll have to remove EFI entry (in UEFI setup or using efibootmgr from Linux) and then remove related files from EFI System Partition (which is hidden in Windows Disk Management, but you can assign a letter to it using diskpart). Make sure that Windows boots. If not, restore from backups. Did I mention that you should make backups beforehand? Make some good backups first.
And that's basically it. You could probably write a book about Linux boot setup and all issues that can arise, but I don't have time to do this right now, so I'm only leaving this answer. Hopefully it will be helpful. Good luck!