Preheat oven to 350 degrees F. Grease two round 8-inch cake pans. Line the bottom of each pan with parchment paper and grease paper. Set aside. (Do not skip the parchment!)
To a medium mixing bowl, add cake flour, cocoa powder, and baking soda. Stir to combine. Set aside.
To the bowl of a stand mixer, add butter, oil, and sugar. (You can use a large bowl and hand mixer too.) Beat for 5 minutes on medium-low speed until smooth and fluffy.
Add eggs one at a time, beating after each addition. Add food coloring, vanilla, and vinegar. Mix until combined. Scrape sides of the bowl as needed.
Add half of the flour mixture to the wet ingredients. Mix until just combined. Pour in buttermilk and mix. Add remaining flour and mix until just combined. Scrape sides of bowl and mix by hand if there's any flour stuck to the sides.
Divide batter evenly between prepared baking pans. Use the back of a spoon to even out the tops.
Bake for 40 to 50 minutes or until a toothpick inserted in the center comes out clean.
Remove cake from oven and let cakes cool for 15 minutes in the pan before removing from pans to cool completely on a wire rack. (If your cakes aren't cooled all the way, they will melt the frosting. Then everything will start to slide and get uneven, You don't want that.)
Cream Cheese Frosting
Add butter, cream cheese, and vanilla to a large mixing bowl or stand mixer. Beat for 3 minutes until smooth and fluffy.
Add powdered sugar to the bowl 1 cup at a time. Beat after each addition until sugar is combined. Scraper side of bowl as needed. Once all sugar is added, beat for 5 minutes until fluffy.
Add 1/3 of the frosting to a piping bag or ziptop plastic bag with a corner cut off.
Assembly
Once cakes are cooled, use a serrated knife or cake leveler to cut off the top of the cakes and make them flat. Cut each cake in half to create 4 layers.
Place one cake layer on a serving plate or cake stand. Spread about 1/3 to 1/2 cup frosting over the top of the cake almost to the edges. Pipe frosting dollops around the edge of the cake. Use an offset spatula to smear the dollops toward the center of the cake. (This will keep them from oozing out.) Repeat with remaining layers.
For the top cake layer, decorate the same way. Be sure the pull the frosting all the way to the center of the cake with the offset spatula. Then give the center a little swirl.
Once the top layer of cake is frosted, wrap the stems of a few roses in floral tape, plastic wrap, or foil. Gently insert the roses into the top of the cake. Add baby's breath if desired.
Serve immediately or chill until ready to serve. Cut into 12 slices and enjoy!
Notes
Do not use self-rising flour. If you can't find cake flour (or just don't want to buy it), you can substitute 2 1/2 cups all-purpose flour + 2 tablespoons all-purpose flour + 6 tablespoons cornstarch.
If you don't have buttermilk on hand, you can substitute sour milk. Combine 1 cup 2% or whole milk with 1 tablespoon of lemon juice or white vinegar. Stir and allow to sit for 5 minutes. This will mimic the acidity of buttermilk, but it won't have quite the same tang.