Preheat oven to 350°F (175°C). Grease and line a 9x13-inch pan.
Make the batter: Cream butter and sugar until fluffy. Add eggs one at a time. Mix in vanilla. Gradually add flour, baking powder, salt, and cinnamon, alternating with milk. Do not overmix.
Prepare streusel: Mix flour, brown sugar, butter, cinnamon (and nuts if using) until crumbly.
Assemble: Pour batter into pan, spread evenly. Sprinkle streusel on top.
Bake for 35–45 minutes, or until a toothpick comes out clean.
Cool for 15–20 minutes before slicing. Serve warm or at room temperature.