Prep your pan and oven: Heat oven to 350°F (175°C). Grease and line a 9-inch square pan with parchment, leaving overhang for easy lifting.
Set aside.
Make the crumb topping: In a bowl, combine 1 cup flour, 1/2 cup light brown sugar, 1/4 cup granulated sugar, 1 teaspoon cinnamon, and a pinch of salt. Stir in 6 tablespoons melted unsalted butter until clumps form. Chill while you prepare the batter.
Whisk the dry ingredients: In a medium bowl, whisk 2 cups all-purpose flour, 1 1/2 teaspoons baking powder, 1/2 teaspoon baking soda, and 1/2 teaspoon kosher salt.
Cream the butter and sugar: In a large bowl, beat 1/2 cup softened unsalted butter with 3/4 cup granulated sugar until light and fluffy, about 2–3 minutes.
Add eggs and flavor: Beat in 2 large eggs, one at a time.
Add 1 tablespoon orange zest, 2 teaspoons vanilla extract, and 2 tablespoons fresh orange juice. Mix until smooth.
Finish the batter: Add the dry ingredients in two additions, alternating with 1/2 cup sour cream and 1/4 cup whole milk. Mix on low just until combined.
The batter will be thick.
Fold in cranberries: Gently fold in 1 1/2 cups cranberries. If using frozen, toss briefly in 1 tablespoon flour to reduce color bleed.
Assemble: Spread the batter evenly in the prepared pan. Break the chilled crumb into large and small clumps and scatter evenly over the top.
Press lightly to help it adhere.
Bake: Bake 40–48 minutes, until the top is golden and a toothpick inserted into the center comes out clean or with a few moist crumbs. If the crumb browns too quickly, tent loosely with foil.
Cool and finish: Let the cake cool in the pan for 20 minutes. Lift out using the parchment and cool to warm-room temperature.
Dust with powdered sugar or whisk a quick glaze (1/2 cup powdered sugar with 1–2 teaspoons orange juice) and drizzle over the top.
Serve: Slice into squares. Enjoy slightly warm for the best texture and aroma.