In a mixing bowl or in the bowl of a stand mixer, whisk sugar, cake flour, baking powder, baking soda, salt, and spices.
Add butter and mix on medium-low speed for three minutes. Because there is so little butter, you'll end up with a very fine crumb texture.
Mix in molasses until fully combined.
In a small mixing bowl, whisk together eggs, sour cream, oil, and vanilla extract until smooth.
Add the egg mixture to the flour mixture and beat on medium speed until just combined.
Slowly add milk and mix on low speed until just combined. The batter will be liquid. (Don't worry, you didn't do anything wrong. It's supposed to be that way.)
Fill cupcake liners just over 3/4 full.
Bake for 14 minutes and then test to see if they are done. They are done when a toothpick comes out without wet batter stuck to it. If they are not done, test again in two minutes. If they are still not done, test again in another two minutes.
When the cupcakes are done, remove them immediately from the tins and leave them on a cooling rack (or just on your counter if you don't own a cooling rack) to cool.
Use an electric mixer to cream butter until creamy and light, about three minutes on high speed.
Mix in cream cheese until just combined.
Mix in powdered sugar one cup at a time. You can add more or less to get your desired consistency.
Mix in spices until fully integrated.
Spread or pipe onto cooled cupcakes.
Optionally, decorate with a gingerbread person.
The molasses that you choose will have a huge impact on your cupcakes. Always opt for a light molasses like Grandma's Original Molasses.If in doubt, it's better to under-fill the the liners than to overfill them. When you overfill them, the cupcakes won't dome as well. For the best results on your frosting, make sure that your frosting ingredients are all at room temperature.