St. Petersburg can be visited on a day trip from Moscow – a long but worth it trip. There are several train options, including the high speed but expensive Sapsan (3hr 45min), check out pass.rzd.ru/main-pass/public/en. We chose a slow, sleeper train, which is not only cheaper but also helps you save two hotel nights. The 4 bed compartment at ~$50 per person was functional and clean, even had a few nice details like snacks.
Some places are meant to be visited under a certain weather. Moscow is one of them; even though I suffered and complained about the extreme cold during my time there, looking back I’m glad I chose the winter to truly experience this wonderful city. Travelling during Christmas forces you to adjust your itinerary; days are shorter, you have to avoid back to back outdoors visits and reserve time for family commitments. I spent 3 days in Moscow with Elena (and her family!), and got to see all the highlights. You should be able to design a packed 2-day itinerary, if needed. I also highly recommend combining St. Petersburg into the same trip, like we did!