Preheat your oven to 350°F (176°C). Grease and flour a 9×13-inch baking pan or line with parchment paper for easy removal.
In a large mixing bowl, sift together the flour, cocoa powder, baking soda, baking powder, salt, and sugar. Whisk to combine.
In a separate medium bowl, whisk together milk, oil, eggs, and vanilla until fully blended.
Pour the wet mixture into the dry ingredients and beat on medium speed until smooth and combined.
Gradually add the hot water while mixing on low speed. Scrape down the sides of the bowl to ensure an even batter.
Pour batter into the prepared pan and smooth the top. Bake for 29–32 minutes or until a toothpick inserted in the center comes out with a few moist crumbs.
Let the cake cool completely in the pan before frosting.
For the frosting, beat the butter and shortening together until light and fluffy (about 2 minutes).
Add half of the powdered sugar and all of the cocoa powder. Beat until fully combined.
Add vanilla extract and 3 tbsp of milk. Mix until smooth and creamy.
Add the remaining powdered sugar and a tablespoon at a time of the remaining milk as needed until the desired spreadable consistency is reached.
Whip on medium speed for 2–3 more minutes until fluffy and lightened in color.
Spread frosting evenly across the cooled cake. Add sprinkles or chocolate shavings if desired.
Slice and serve. Store leftovers covered at room temperature for up to 3 days or refrigerated for 5 days.