Preheat oven to 350°. Line cupcake pans with liners.
Whisk flour, sugar, cocoa, salt, and baking soda in a large bowl. Add eggs, oil, buttermilk, white vinegar, and vanilla to a large measuring cup or extra bowl and whisk until combined. Add to dry ingredients and mix with a hand mixer until smooth. Add red food coloring and mix slowly until combined.
Place about 2-3 tablespoons of batter into the bottom of each cupcake liner (about 1/2 full).
Make the cheesecake: Mix cream cheese, sugar, vanilla, and sour cream with a hand mixer until smooth. Drop about 1 or 1 1/2 tablespoons of cheesecake mixture on top of each cupcake. Smooth it around with the back of a spoon (try to keep it from touching the edges, the cupcakes stay prettier that way).
Bake about 15-18 minutes or until a toothpick stuck in the cake part comes out clean. The cream cheese filling will be the teeniest bit jiggly still. Cool to room temperature, then chill for at least 2 hours before frosting. (Note: the cupcakes can be frozen once cooled and frosted at a later date.)
Make the frosting: Using a hand or a stand mixer, cream butter and cream cheese until fluffy. Slowly add in powdered sugar, salt, and vanilla. Mix until smooth.
Frost the top of each cupcake with a bit of frosting. For a decorative effect, use a 1M tip with a pastry bag. Store in refrigerator for up to 3 days.