Preheat your oven to 350°F (175°C). Grease and flour a 9x13-inch baking dish.
In a medium bowl, whisk together the flour, baking powder, salt, and cocoa powder. Set aside.
In a large mixing bowl, cream together the softened butter and granulated sugar until light and fluffy.
Add the eggs one at a time, mixing well after each addition. Stir in the vanilla extract.
Gradually add the dry ingredients to the wet mixture, alternating with the whole milk. Mix until just combined.
Pour the batter into the prepared baking dish and smooth the top. Bake for 25-30 minutes, or until a toothpick inserted in the center comes out clean.
While the cake is baking, prepare the tres leches mixture by whisking together the sweetened condensed milk, evaporated milk, and whole milk in a bowl.
Once the cake is done, remove it from the oven and let it cool for about 10 minutes. Poke holes all over the top of the cake with a fork.
Slowly pour the tres leches mixture over the warm cake, allowing it to soak in. Let the cake cool completely, then refrigerate for at least 2 hours or overnight for best results.
For the chocolate ganache, heat the heavy cream in a small saucepan until just simmering. Remove from heat and add the chocolate chips, stirring until smooth. Let it cool slightly.
Once the cake is chilled, pour the chocolate ganache over the top, spreading it evenly.
If desired, top with whipped cream and chocolate shavings before serving.