Preheat your oven to 350°F (175°C) and line a muffin tin with cupcake liners.
In a large bowl, whisk together the flour, sugar, baking soda, salt, and cocoa powder until well combined.
In another bowl, mix the vegetable oil, buttermilk, eggs, red food coloring, vanilla extract, and vinegar until smooth.
Gradually add the wet ingredients to the dry ingredients, mixing until just combined. Be careful not to 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 them to a wire rack to cool completely.
While the cupcakes are cooling, prepare the cream cheese frosting. In a large bowl, beat the softened cream cheese and butter together until smooth and creamy.
Gradually add the powdered sugar and vanilla extract, mixing until well combined. If you prefer a thinner frosting, add the heavy cream a little at a time until you reach your desired consistency.
Once the cupcakes are completely cool, frost them generously with the cream cheese frosting using a spatula or piping bag.
Serve immediately or store in an airtight container in the refrigerator for up to 3 days.