Heat oven to 350°F. Grease a 9×13-inch pan and line the bottom with parchment.
Whisk flour, baking powder, and salt in a medium bowl.
Beat softened butter and sugar until light and fluffy, about 2–3 minutes.
Mix in the oil. Beat in eggs one at a time, then blend in vanilla.
Stir milk and sour cream together in a measuring cup.
Add dry ingredients to the butter mixture in three additions, alternating with the milk mixture. Mix just until combined.
Spread batter evenly in the pan. Tap the pan once to release bubbles.
Bake 26–30 minutes, until golden and a toothpick comes out clean.
Cool in the pan 15 minutes. Turn out to a rack and cool completely.
Beat frosting butter until creamy. Gradually mix in powdered sugar and salt.
Beat in vanilla and milk until light and fluffy, 1–2 minutes.
Frost the cooled cake. Slice into squares and serve.