Preheat the oven to 350 degrees. Grease a 9x13” baking pan; set aside.
Make the sauce before the cake so the sauce has time to cool down. Add the cocoa powder, sugar, and salt to a medium pot. Whisk together to break up lumps.
Turn the heat to medium-low and add the water. Whisk to combine.
Bring the sauce up to a gentle boil. Be careful the chocolate mixture does not bubble over.
Reduce heat to low. Gently simmer for 2 minutes.
Pour the sauce into a bowl. Add the vanilla and stir. Set aside while you make the cake. Or, the sauce can be made up to 2 days before and kept refrigerated. Gently reheat to just warm through before pouring over the cake.
Make the cake. In a stand mixer bowl (or medium bowl using a hand-held mixer), add the cake and pudding mixes. Combine together on low for about 1 minute. Add the egg whites, sour cream, oil, vanilla, and buttermilk. Mix on medium speed for 2 minutes, scraping the sides of the bowl, as needed.
Scrape the batter into the greased pan and smooth the top, evenly spreading the batter to the edges of the pan.
Bake for 22 to 28 minutes, or until a toothpick inserted in the middle of the cake comes out with a few crumbs attached.
Allow the cake to cool for 15 minutes. Using a round spoon handle, evenly poke holes across the cake, spacing about 1 ½” apart.
Evenly pour the warm chocolate sauce over the entire top of the cake, allowing the sauce to flow down into the holes. Spread the sauce over the cake as you pour to evenly distribute. Set aside to cool, about 1 to 2 hours. You can place the cake in the refrigerator to speed up the cooling process.
Make the whipped cream. In a stand mixer or with a hand-held mixer, whip the heavy cream until slightly thickened.
Add the sugar, vanilla, syrup, and food coloring if using. Whip until stiff peaks form.
Evenly spread the whipped cream over the cake.
Sprinkle chocolate shavings over the top, if desired.
Serve immediately, or cover well with cling wrap and refrigerate up to 5 days.