Preheat your oven to 350°F (175°C). Grease and flour the two 9-inch cake pans.
In a large mixing bowl, sift together the flour, sugar, baking powder, baking soda, cocoa powder, and salt.
In another bowl, combine oil, buttermilk, eggs, vanilla extract, food coloring, and vinegar. Mix until well combined.
Gradually add the wet ingredients to the dry ingredients, mixing just until combined. Avoid over-mixing.
Divide the batter evenly between the prepared cake pans.
Bake in the preheated oven for 25-30 minutes or until a toothpick inserted in the center comes out clean. Allow to cool in the pans for 10 minutes before transferring to a cooling rack to cool completely.
For the cream cheese frosting, beat the softened cream cheese and butter together in a bowl until smooth and creamy.
Gradually add the powdered sugar, mixing until well combined. Add vanilla extract and mix. If the frosting is too thick, add milk one tablespoon at a time until the desired consistency is reached.
Once the cakes have cooled completely, place one layer on a serving platter and spread a layer of frosting on top. Place the second layer on top and frost the top and sides of the cake.
Decorate as desired and serve!