Preheat your oven to 350°F. While it heats, grease a 9x13 inch baking pan (or 8x8 if you prefer thicker brownies) with butter or cooking spray, making sure to coat the bottom and sides evenly. This prevents sticking and ensures even browning on the edges.
In a medium bowl, sift together the cocoa powder, all-purpose flour, baking powder, and salt. This removes any lumps from the cocoa and aerates the flour, which helps create a lighter crumb. Add the espresso powder and whisk everything together until well combined—the espresso enhances the chocolate flavor without making the brownies taste like coffee. Set this dry mixture aside.
In a large bowl, melt the butter over low heat or in the microwave in 30-second intervals, stirring between each interval to avoid overheating. Once melted and slightly cooled, add the sugar and stir vigorously for about 1 minute—this helps dissolve the sugar and create a smoother batter. Pour in the room-temperature milk and vanilla extract, whisking until the mixture is smooth and well combined. The room-temperature milk is important because cold milk can cause the melted butter to seize.
Add the dry ingredient mixture from Step 2 to the wet mixture from Step 3. Fold everything together with a spatula using a gentle folding motion (rather than aggressive stirring) until just combined—overmixing can lead to tough brownies. A few small flour streaks are okay; stop folding as soon as you don't see dry flour. I like to use a spatula rather than a wooden spoon here because it gives me more control and helps me avoid overworking the batter.
Fold the chocolate chips (if using) into the batter, distributing them evenly throughout. Pour the batter into your prepared pan from Step 1, using a spatula to spread it in an even layer. The chocolate chips add pockets of richness and are absolutely worth including—they make a difference in the final texture and flavor.
Place the pan in your preheated 350°F oven and bake for 28-32 minutes. The brownies are done when a toothpick inserted into the center comes out with a few moist crumbs (not wet batter, but not completely clean either). The residual heat will continue cooking them slightly as they cool, so it's better to slightly underbake than overbake.
Remove the brownies from the oven and let them cool in the pan for at least 15 minutes at room temperature. This cooling time allows the brownies to set properly so they cut cleanly without crumbling. Once cooled, run a knife around the edges and cut into squares. For cleaner cuts, I like to wipe my knife between each cut with a damp paper towel.