Preheat oven to 350°F (175°C). Grease and flour two 9-inch round cake pans.
In a large bowl, cream together the softened butter and granulated sugar until light and fluffy.
Beat in the eggs one at a time, then stir in the vanilla extract.
In a separate bowl, whisk together the flour, baking powder, and salt.
Gradually add the dry ingredients to the wet ingredients, alternating with the milk, beginning and ending with the dry ingredients. Mix until just combined.
Divide the batter evenly between the prepared cake pans. Bake for 30-35 minutes, or until a wooden skewer inserted into the center comes out clean.
Let the cakes cool in the pans for 10 minutes before inverting them onto a wire rack to cool completely.
While the cakes are cooling, prepare the caramel: In a saucepan, combine sugar and water. Cook over medium heat, stirring until sugar dissolves. Stop stirring and let it simmer until it turns an amber color.
Carefully whisk in the warm heavy cream, butter, and vanilla extract. The mixture will bubble up. Stir until smooth. Let it cool slightly.
Prepare the ganache: Place chopped chocolate in a heatproof bowl. Heat heavy cream in a small saucepan until it just begins to simmer. Pour the hot cream over the chocolate and let it sit for 5 minutes, then whisk until smooth.
Assemble the cake: Place one cake layer on a serving plate. Spread a generous layer of caramel over it.
Top with the second cake layer. Pour the chocolate ganache over the top and sides of the cake, spreading it evenly.
Allow the ganache to set before slicing and serving.
Notes
For best results, ensure all ingredients are at room temperature before starting. The caramel can be made ahead of time and gently reheated if needed.