Preheat your oven to 350°F and line a muffin tin with 12 cupcake liners. Whisk together flour, cocoa powder, baking soda, baking powder, and salt in a medium bowl. Set this dry mixture aside for now.
Cream softened butter and sugar together until the mixture is light and fluffy, which takes about 3 minutes of beating. Add eggs one at a time, beating well after each addition so everything combines smoothly. Scrape down the bowl as you go because I always miss little pockets of unmixed butter hiding at the bottom.
Add vanilla extract and red gel food coloring to the butter mixture, then beat until the color is completely uniform throughout. The batter should look like a gorgeous deep burgundy at this point. Don't panic if it seems dark — that's exactly right.
Alternate adding the dry ingredients and buttermilk to the wet mixture, starting and ending with the dry ingredients. Begin with half the flour mixture, then half the buttermilk, then the remaining flour, then the remaining buttermilk. This prevents overmixing and keeps your red velvet cupcakes crowd tender instead of tough.
Divide batter evenly between cupcake liners, filling each about three-quarters full. Bake for 18-20 minutes until a toothpick inserted in the center comes out clean. The tops should spring back lightly when you touch them.
Let cupcakes cool in the tin for 10 minutes, then turn them out onto a wire rack to cool completely before frosting. This step matters because warm frosting will slide right off, and I learned this the messy way one afternoon.
Beat softened cream cheese and butter together until smooth and creamy, about 2 minutes. Add powdered sugar gradually while beating until you reach thick frosting consistency. Pipe frosting onto completely cooled cupcakes and refrigerate for 15 minutes before serving.