Heat the oven to 335°F. Grease two 8-inch round cake pans, line the bottoms with parchment, then lightly flour the sides. Set aside.
In a large measuring cup, whisk together the milk, sour cream, eggs, and vanilla. Let this mixture stand 10 minutes so it’s no longer chilly.
In the bowl of a stand mixer (or a large bowl), whisk the sugar, flour, baking powder, and salt for 30 seconds to evenly distribute the leavening.
Add the softened butter to the dry ingredients and mix on low until the butter is fully worked in and the mixture looks like damp sand, 1–2 minutes. Scrape the bowl.
With the mixer on low, stream in about half of the milk mixture. Increase to medium and beat for 1 minute to build structure. Scrape down the bowl once more.
Add the remaining milk mixture in two additions, mixing just until smooth after each. Finish by folding the batter with a spatula to catch any pockets of flour.
Divide the batter evenly between the pans and smooth the tops. Tap each pan firmly on the counter to pop large bubbles.
Bake for 28–32 minutes, rotating the pans after 20 minutes, until the cakes are golden and a toothpick inserted near the center comes out with a few moist crumbs.
Cool in the pans for 10 minutes. Turn out onto a rack, peel away parchment, and cool completely, about 45–60 minutes, before frosting.
Make the buttercream: Sift the cocoa with the powdered sugar. Beat the softened butter on medium-high until pale and creamy, 2 minutes. Add the cocoa mixture and espresso powder in two additions on low speed. Mix in vanilla, salt, and 1/4 cup cream, then whip 2–3 minutes until fluffy. If needed, add cream by the teaspoon for a smoother spread or extra sugar for more body.
Assemble: Place one cake layer on a board. Spread about 1 cup frosting over the top. Set the second layer on and apply a thin crumb coat over the entire cake. Chill 15 minutes, then finish with the remaining frosting. For neat slices, warm a knife under hot water and wipe dry between cuts.