Sift together flour, baking soda, salt, and cocoa powder into a bowl and set aside.
In a mixer fitted with paddle attachment, mix oil, sugar, and buttermilk until combined. Add eggs, food coloring, vinegar, vanilla and water and mix well. Add the dry ingredients a little bit at a time and mix on low, scraping down sides occasionally, and mix until just combined. Be sure not to over mix, or the batter will come out tough.
Line a 16-cup cupcake pan with paper liners, scoop the batter into the liners and bake at 350 degrees F for 20 to 30 minutes or until the toothpick comes out clean. Let cool.
For the cream cheese frosting:
Whip the butter and cream cheese together in a mixer fitted with a paddle attachment until creamed. Gradually add powdered sugar to the mixture and scrape down the bowl as needed. Add the vanilla and mix until combined.
The frosting can be used right away, or stored in the refrigerator up to a week.
Frost cooled cupcakes with the cream cheese frosting.