What has worked best for me is to use a helmet cover outside my helmet and then just wear a warm headband underneath. Saves my hair from getting sweaty and compressed under a beanie.
If I do wear a beanie, I am fond of merino wool (comfy, stays warm even if damp/wet).