Preheat oven to 350°F (175°C). Grease two 9-inch round pans, line with parchment, and grease again.
Whisk flour, baking powder, and salt together in a medium bowl. Set aside.
Beat room-temperature butter on medium speed for 2 minutes. Add sugar and beat for 3 more minutes until pale and fluffy.
Add eggs one at a time, mixing until just incorporated after each. Add vanilla with the last egg.
On low speed, alternate adding the flour mixture (3 additions) and buttermilk (2 additions), beginning and ending with flour. Mix only until each addition is incorporated.
Divide batter evenly between the two prepared pans.
Bake for 28 to 32 minutes, until a toothpick inserted in the center comes out with a few moist crumbs and the edges pull from the pan.
Cool in pans for 10 minutes, then invert onto a wire rack. Peel off parchment. Cool completely before frosting, at least 30 minutes.
For the buttercream: beat softened butter for 3 minutes on medium-high. Add sifted powdered sugar and cocoa on low in two additions. Add vanilla, salt, and milk one tablespoon at a time until spreadable.
Frost cooled layers. Apply a thin crumb coat, refrigerate 15 minutes, then apply the final layer of frosting.