Heat your oven to 350°F and lightly grease a 9x13 inch baking pan. Mix together 2 cups flour, 2 teaspoons baking powder, and 1/4 teaspoon salt in a medium bowl, then set aside. These dry ingredients need to stay separate until you're ready to combine everything.
Cream 1/2 cup softened butter with 1 cup granulated sugar until the mixture looks light and fluffy (about 2 minutes with an electric mixer). Beat in 2 large eggs one at a time, making sure each one fully combines before adding the next one.
Alternate adding the flour mixture and 1 cup milk to the butter mixture, starting and ending with flour. Mix on low speed just until combined — don't overmix or your cake gets tough. Gently fold in 1 cup fresh blueberries and 2 tablespoons lemon zest until they're evenly distributed throughout the batter.
Pour the batter into your prepared pan and bake for 35 minutes until a toothpick inserted in the center comes out clean. While the cake bakes, whisk together 1/4 cup fresh lemon juice and 1/2 cup powdered sugar to create the soaking syrup.
Remove the cake from the oven while it's still warm and immediately poke holes all over using a fork or wooden skewer. I use a fork and make about 50-60 small holes across the entire surface, spacing them roughly an inch apart.
Slowly pour the lemon syrup all over the warm cake, letting it soak into those poked holes instead of pooling on top. The warm cake absorbs the liquid way better than a cooled cake would, which is why timing matters here.
Let the cake cool completely to room temperature, then refrigerate for at least 2 hours before adding the whipped cream topping. Whip 1 cup heavy cream until soft peaks form (about 3 minutes), then spread it over the chilled cake right before serving.