Preheat oven to 350°F or 177°C. Grease three 8-inch cake pans and line with parchment paper, then grease the paper.
In a bowl, whisk together flour, baking powder, baking soda and salt. Set aside.
In a large bowl, beat butter and sugar on high for 3 minutes until pale and fluffy. Scrape the bowl halfway through.
Add eggs and vanilla. Beat on high until smooth. Scrape bowl again.
Reduce mixer to low. Slowly add dry ingredients and mix just until combined.
Still on low, pour in milk, lemon zest and juice. Mix until just combined. Fold with a spatula if needed to remove flour pockets.
Divide batter evenly between pans. Bake for 21 to 26 minutes. Check with a toothpick for doneness. Cool completely on a rack.
To make frosting, beat butter on medium until creamy. Add cream cheese and beat until smooth.
Add sugar, lemon juice and vanilla while mixer is on low. Then increase to high and beat for 3 minutes until fluffy. Adjust with more sugar or lemon juice if needed.
Trim cake layers to level. Place first layer on stand. Spread 1 cup of frosting. Add second layer and repeat. Cover with remaining frosting.
Chill the cake for 30 to 45 minutes before serving. Store leftovers covered in the fridge for up to five days.