Cream together softened butter and sugar in a large mixing bowl, scraping down the sides as needed. Mix in the egg, vanilla, and sour cream.
In a separate bowl, whisk together the flour, baking powder, and salt.
Add half of the flour mixture to the batter and mix on low speed just until combined. Then, add the milk and mix until it is almost fully incorporated. Fold in the remainder of the flour mixture just until fully combined, and set it aside.
Make The Filling
In a food processor, add all of the filling ingredients except for the walnuts. Blend until fully mixed with a sandy texture. Add walnuts and pulse until they are finely chopped. Set aside.
Make The Topping
Add all of the topping ingredients to the food processor. Pulse until combined. Streusel should appear crumbly with some larger chunks. Set it aside.
Assemble & Bake
Preheat oven to 350°F and lightly grease a 9x9 pan. Pour half the batter into the pan and spread evenly. Add a generous amount of filling on top of the batter.
Pour the rest of the batter on top of the filling and smooth the top. Sprinkle the streusel over the top of the cake batter.
Place cake on middle rack in oven. Bake for 45-50 minutes or until the cake tests done with a toothpick. Remove from oven and let cool.
Glaze & Serve
In a small bowl, combine the powdered sugar, milk, and vanilla. Whisk until smooth. Once the cake is completely cooled, drizzle the glaze on top. Slice into squares, serve, and enjoy!
Measure the flour correctly by spooning it into the measuring cup and leveling it off with the back of a knife (or other straight edge).
To avoid overmixing, stop as soon as the flour is combined and there are no dry spots in the batter.
Toasting the walnuts is optional but adds better flavor and texture! Spread them on a parchment-lined baking sheet and bake at 325°F for 8-12 minutes until golden brown. Let cool before using.
Check out our easy powdered sugar icing post for more detailed instructions, recipe variations, and more!