Preheat the oven to 350°F (175°C) and line a muffin tin with cupcake liners.
In a large bowl, sift together the flour, sugar, baking soda, salt, and cocoa powder.
In another bowl, whisk together the vegetable oil, buttermilk, eggs, red food coloring, vanilla extract, and white vinegar until well combined.
Gradually add the wet ingredients to the dry ingredients, mixing until just combined. Do not overmix.
Divide the batter evenly among the cupcake liners, filling each about two-thirds full.
Bake for 18-20 minutes, or until a toothpick inserted into the center comes out clean. Let the cupcakes cool in the pan for 5 minutes, then transfer to a wire rack to cool completely.
For the cream cheese frosting, beat the softened cream cheese and butter together in a large bowl until smooth and creamy.
Gradually add the powdered sugar and vanilla extract, mixing until well combined. If the frosting is too thick, add milk one tablespoon at a time until desired consistency is reached.
Once the cupcakes are completely cool, frost them generously with the cream cheese frosting using a spatula or piping bag.