Make the cake
Preheat the oven to 350°F. Lightly grease a 9-inch square baking pan; set aside.
Whisk the flour, baking soda, and salt together. Set aside.
Using a handheld or stand mixer fitted with a paddle attachment, beat the butter and sugar together on high speed until light and fluffy, about 3 minutes. Scrape down the sides of the bowl as needed.
Add the egg and vanilla. Beat on medium-high speed until combined. The mixture may look curdled; this is normal. Scrape down the sides of the bowl as needed.
With the mixer on low speed, mix in half the dry ingredients until just moistened. Add the milk followed by the remaining dry ingredients. Mix until smooth but take care not to overmix. The batter will be thick.
Spread half the batter into the bottom of the prepared pan.
Make the filling
Combine the ingredients for the filling together in a medium bowl. Use your fingertips to pinch the mixture together until it resembles wet sand.
Sprinkle the filling evenly over the batter. Carefully spread the remaining batter over the top of the filling.
Make the topping
Combine the ingredients for the topping together in a medium bowl. Use your fingertips to pinch the mixture together until coarse crumbs form.
Sprinkle the topping evenly over the batter and press it down lightly. Bake for 45-50 minutes or until a toothpick inserted into the center comes out clean.
Remove from the oven and set on a wire rack. Allow it to cool for at least 30-45 minutes before slicing and serving.
Make ahead top
The cake will keep for up to 5 days covered tightly and stored in the refrigerator.
The cake will keep for up to 3 months in the freezer. Thaw overnight in the refrigerator then bring to room temperature before serving.