Preheat the oven to 350°F (175°C) and grease a 9-inch square baking pan.
Prepare the streusel by mixing 1/2 cup flour, brown sugar, and cinnamon in a small bowl; cut in 4 tablespoons cold butter with a pastry blender until crumbly.
In a medium bowl, whisk together 2 cups flour, baking powder, baking soda, and salt.
In a large bowl, cream 1/2 cup softened butter and granulated sugar until light and fluffy.
Add eggs one at a time, beating well after each addition, then stir in the vanilla extract.
Incorporate the dry flour mixture into the creamed butter alternately with the sour cream, mixing until just combined.
Spread half of the batter into the prepared baking pan.
Layer the cranberry sauce evenly over the batter.
Dollop the remaining batter over the cranberry sauce and spread gently to the edges.
Sprinkle the streusel mixture evenly over the top of the batter.
Bake for 45 to 50 minutes, or until a toothpick inserted into the center comes out clean.
Allow the cake to cool in the pan for 20 minutes before slicing.