Preheat your oven to 350°F (175°C). Grease your donut pan thoroughly to ensure the donuts release easily after baking.
In a large bowl, sift together the all-purpose flour, unsweetened cocoa powder, baking soda, and salt. Sifting helps to evenly incorporate the ingredients and remove any lumps.
In a separate bowl, whisk together the buttermilk, granulated sugar, vegetable oil, large egg, and vanilla extract until smooth and well combined. This creates a uniform mixture that helps the batter come together easily in the next step.
Pour the wet ingredients into the dry ingredients. Gently mix until just combined—do not overmix, as this can make the donuts tough. Spoon or pipe the batter into the prepared donut pan, filling each cavity about three-quarters full. Bake the donuts for 8–10 minutes, or until a toothpick inserted into one comes out clean. Allow the donuts to cool for a few minutes in the pan before transferring to a wire rack to cool completely. I like to tap the pan on the counter a few times to settle the batter evenly before baking.
In a medium bowl, mix together Nutella or chocolate hazelnut spread, softened butter, and milk until smooth and creamy. This frosting will be easy to spread over the cooled donuts. For an extra silky texture, you can beat it for a minute with a hand mixer.
Once the donuts are completely cooled, spread a generous layer of Nutella frosting from Step 5 over each donut using a small spatula or butter knife. Sprinkle the tops with crushed hazelnuts for a delightful crunch and enhanced nutty flavor. I like to sprinkle a pinch of flaky salt on top too—it makes the chocolate even richer!