Preheat oven to 350. Grease and flour 2 9-inch round cake pans.
In the bowl of your stand mixer, add the flour, sugar, cocoa powder, baking soda, baking powder, and salt. Whisk to combine.
Add the eggs, greek yogurt, buttermilk, water, oil, and vanilla. Beat for 2 minutes (using the paddle attachment) or until ingredients are well combined.
Divide batter evenly amongst the 2 cake pans.
Bake for 25-30 minutes or until a toothpick goes in the center and comes out clean.
Place on cooling rack and let cool for 10 minutes. After 10 minutes turn out the cakes onto the cooling rack and let them cool completely before frosting.
In a large bowl, or the bowl of a stand mixer fitted with the paddle attachment, add the cream cheese and butter. Beat on high speed for 2 minutes or until light and fluffy.
Add the cocoa powder, vanilla, and salt. Mix until combined.
With the mixer speed on low gradually add the powdered sugar. Once the powdered sugar has been added, add the milk. If the frosting is too thick, gradually add more milk 1 tablespoon at a time. You want the frosting to be thick, but a spreadable consistency.
Frost the cake by adding a generous frosting layer between the 2 layers of cake. Spread frosting along the top and sides of the cake. Decorate as desired.
Refrigerate for 30 minutes-1 hour before serving (this helps the frosting set and firm up a bit). But not necessary! You can serve immediately if you'd like.