Pre-heat oven to 350 degrees and prepare 13 x9 pan with butter or non-stick spray. If making night before, skip oven.
In a large mixing bowl, whisk together flour, sugar, yeast and salt.
Using a small pot, melt butter and warm milk together.
With the paddle attachment and low speed, slowly incorporate milk and butter mixture into dry ingredients on stand mixer. If doing by hand, use a spatula to mix together.
While still mixing, add egg and incorporate.
Once egg is incorporated, switch to dough hook attachment. Mix over medium speed for about 5 minutes or until dough ball has formed and begins to pull away from sides of bowl. If mixing by hand, knead dough until dough ball has formed and is slightly sticky, about 5-7 minutes.
Knead dough on floured surface 10-12 times, then cover and let sit for 10 minutes.
Meanwhile, make the filling. Begin by melting the butter in a small pot over medium heat, do not let butter burn. Add brown sugar and spices and stir together until melted, set aside.
Return dough to floured surface and roll out into large rectangle, about 12×24. Spread filling over dough, then tightly roll into log form. Cut into 12 rolls.
Place rolls into prepared pan. Let rise, covered, for 20-30 minutes or overnight in the fridge.
Bake cinnamon rolls for 15-20 minutes until slightly golden brown. If stored in fridge overnight, let rolls come to room temperature before baking.
While cinnamon rolls are baking, make the frosting by whisking together powdered sugar, cream cheese and milk until smooth.
Let rolls cool slightly, but while still very warm, spread frosting on top. Serve immediately.