Heat oven to 350°F. Grease a 13×18-inch rimmed sheet pan and line with parchment.
Whisk flour, sugar, baking soda, and salt in a large bowl.
Melt butter, peanut butter, and water in a saucepan over medium heat. Whisk until smooth, then cool 2 minutes.
Pour the warm peanut butter mixture into the dry ingredients and stir until mostly combined.
Whisk eggs, buttermilk, and vanilla together, then fold into the batter until smooth.
Spread batter evenly in the pan. Tap the pan once to release bubbles.
Bake 20–23 minutes, until the center springs back and a toothpick comes out clean.
Start the frosting during the last 5 minutes of baking. Heat butter, peanut butter, and milk in a saucepan until it gently bubbles.
Remove from heat. Whisk in vanilla and salt, then beat in powdered sugar until glossy and spreadable.
Pour warm frosting over the hot cake. Spread quickly and sprinkle with peanuts, if using.
Cool until set, about 30 minutes. Slice into squares and serve.