Prepare your pan and oven. Preheat your oven to 350°F (175°C) and grease a 9×13 inch baking pan, then line with parchment paper, leaving overhang on the sides for easy removal.
Make the streusel topping. In a medium bowl, whisk together flour, brown sugar, cinnamon, pumpkin pie spice, and salt. Pour in the melted butter and stir with a fork until crumbly. The mixture should hold together when squeezed but break apart easily. Set aside.
Mix the dry ingredients. In a large bowl, whisk together flour, baking soda, baking powder, pumpkin pie spice, and salt until well combined.
Cream the butter and sugars. In another large bowl, beat the softened butter and both sugars with an electric mixer until light and fluffy, about 3-4 minutes. Don’t rush this step—proper creaming creates a tender cake structure.
Add the eggs and wet ingredients. Beat in eggs one at a time, then mix in pumpkin puree and vanilla until well incorporated. The mixture might look slightly curdled, but that’s normal.
Combine wet and dry ingredients. Gradually fold the dry ingredients into the wet ingredients, alternating with the sour cream, beginning and ending with the flour mixture. Mix just until combined—overmixing will make your cake tough.
Layer the batter and streusel. Pour half the batter into the prepared pan and spread evenly. Sprinkle with one-third of the streusel mixture. Top with remaining batter, spreading carefully, then sprinkle the remaining streusel over the top.
Bake until perfectly done. Bake for 50-60 minutes, or until a toothpick inserted in the center comes out with just a few moist crumbs (not wet batter). The cake should spring back when lightly touched.
Cool before glazing. Allow the cake to cool in the pan for 15 minutes, then use the parchment overhang to lift it out. Let it cool completely on a wire rack.
Add the optional glaze. If using, whisk together powdered sugar, milk, and vanilla until smooth. Drizzle over the cooled cake before slicing.