Roast the Sweet PotatoesPreheat the oven to 400°F. Use a fork to pierce the sweet potatoes and place them on a baking sheet. Bake for 50 to 60 minutes or until completely soft. Allow them to cool slightly, then cut open and scoop out the flesh.
Make the Sweet Potato MixtureIn a large mixing bowl, add the scooped sweet potato flesh. Mix in melted butter, sugar, eggs, vanilla, cinnamon, salt, and half-n-half. Use a mixer or whisk to blend until smooth and creamy.
Prepare the Casserole DishSpread the sweet potato mixture into a 9x13-inch baking dish, smoothing out the top.
Make the Streusel ToppingIn a small bowl, combine the softened butter, brown sugar, and flour. Mix with a fork or your hands until crumbly.
Add the Topping and BakeSprinkle the streusel topping evenly over the sweet potato mixture. Bake at 350°F for 20 to 25 minutes or until the casserole is heated through and the topping is golden brown.
Optional ToppingsFor extra flavor and texture, add mini marshmallows or chopped pecans on top of the streusel before baking.