Make the Cake Layers:
- Prep your pans: Preheat oven to 350°F (175°C). Grease three 8-inch or 9-inch round cake pans with butter or cooking spray, line bottoms with parchment paper circles, then grease the parchment. Lightly dust with flour, tapping out excess.
- Mix dry ingredients: In a medium bowl, whisk together flour, baking powder, and salt. Set aside.
- Cream butter and sugar: In a large bowl using an electric mixer on medium-high speed, beat butter and sugar together for 4-5 minutes until light, fluffy, and pale in color. This step is crucial for a tender cake—don’t rush it!
- Add eggs: Add eggs one at a time, beating well after each addition. Mix in vanilla extract.
- Alternate wet and dry: With mixer on low speed, add flour mixture in three additions, alternating with milk in two additions, beginning and ending with flour. Mix each addition just until combined. Don’t overmix or your cake will be tough.
- Bake: Divide batter evenly among prepared pans (use a kitchen scale for precision if you have one). Smooth tops with a spatula. Bake for 23-27 minutes, until a toothpick inserted in the center comes out clean and cake springs back when gently pressed. The tops should be lightly golden.
- Cool: Let cakes cool in pans for 10 minutes, then turn out onto wire racks. Remove parchment and let cool completely before assembling (about 1 hour).
Make the Espresso Soak:
- Combine ingredients: While cakes cool, stir together cooled espresso, sugar, and coffee liqueur (if using) until sugar dissolves. Set aside.
Make the Mascarpone Frosting:
- Cook the custard base: In a medium saucepan, whisk together egg yolks, sugar, and milk. Cook over medium-low heat, stirring constantly with a whisk or wooden spoon, for 8-10 minutes until mixture thickens enough to coat the back of a spoon (should reach about 160°F on a thermometer). Don’t let it boil or the eggs will scramble.
- Cool the custard: Remove from heat and let cool to room temperature, stirring occasionally. You can speed this up by placing the pan in a bowl of ice water. Once cooled, transfer to a bowl, cover with plastic wrap pressed directly on the surface, and refrigerate until completely chilled (at least 1 hour).
- Beat the mascarpone: In a large bowl, beat mascarpone cheese with an electric mixer on medium speed for 1-2 minutes until smooth and creamy. Add the chilled custard mixture and beat until combined and smooth.
- Whip the cream: In a separate large, cold bowl, beat heavy cream, vanilla, and salt on medium-high speed until stiff peaks form. Be careful not to overbeat.
- Fold together: Gently fold the whipped cream into the mascarpone mixture in three additions, using a rubber spatula and a folding motion. Fold just until no white streaks remain—don’t overmix or you’ll deflate the frosting.
Assemble the Cake:
- Prep for assembly: Place your first cake layer on a serving plate or cake stand. If domed on top, use a serrated knife to level it.
- First layer: Brush the top generously with espresso soak (about ⅓ of the mixture). Let it soak in for a minute. Spread about 1 cup of mascarpone frosting evenly over the soaked layer, leaving a small border at the edges.
- Second layer: Place second cake layer on top, brush with another ⅓ of espresso soak, then spread with another cup of frosting.
- Third layer: Top with final cake layer (place it bottom-side up for a flat top surface). Brush with remaining espresso soak.
- Crumb coat: Spread a very thin layer of frosting over the entire cake (top and sides) to seal in crumbs. This is your crumb coat. Refrigerate for 30 minutes to set.
- Final frosting: Remove from fridge and spread remaining frosting over top and sides of cake, smoothing with an offset spatula. You can make it perfectly smooth or create rustic swirls—both look beautiful.
- Finish: Just before serving, dust the top generously with cocoa powder using a fine-mesh sieve. Add chocolate shavings if desired.
- Chill and serve: Refrigerate cake for at least 2 hours before serving, or ideally overnight. The flavors meld and improve with time. Let sit at room temperature for 15-20 minutes before slicing for the best texture.