Preheat and prep: Heat your oven to 350°F (175°C). Grease a 9x13-inch baking pan, or line it with parchment for easy lifting.
Make the streusel: In a bowl, mix 1 cup flour, 1/2 cup brown sugar, 1/4 cup granulated sugar, 1 teaspoon cinnamon, and a pinch of salt.
Cut in 1/2 cup cold butter until clumps form. Stir in 1/2 cup chopped nuts if using. Chill while you make the batter.
Whisk the dry ingredients: In a large bowl, whisk 2 cups flour, 1 cup granulated sugar, 1/2 cup brown sugar, 1 1/2 teaspoons baking powder, 1/2 teaspoon baking soda, 1/2 teaspoon salt, 2 teaspoons cinnamon, 1/2 teaspoon nutmeg, 1/2 teaspoon ginger, and a pinch of cloves.
Combine the wet ingredients: In another bowl, whisk 1 cup pumpkin puree, 1/2 cup oil, 2 large eggs, 2 teaspoons vanilla, and 1/2 cup buttermilk or yogurt until smooth.
Bring the batter together: Pour the wet mixture into the dry.
Stir gently with a spatula just until no dry spots remain. The batter should be thick but spreadable. Avoid overmixing.
Assemble: Spread the batter evenly in the pan.
Sprinkle the chilled streusel evenly over the top. Press it very lightly so it adheres without sinking.
Bake: Bake 28–35 minutes, until a toothpick inserted in the center comes out clean or with a few moist crumbs. The top should be golden and set.
Cool: Let the cake cool in the pan for at least 20–30 minutes.
This helps the crumb set and makes slicing cleaner.
Glaze (optional): Whisk 3/4 cup powdered sugar with 1–2 tablespoons milk and a splash of vanilla until pourable. Drizzle over the slightly warm cake.
Serve: Slice into squares. Enjoy warm or at room temperature with coffee or tea.