Preheat oven to 350 F. Grease or use parchment paper to line a 9x9-inch baking pan.
In a large saucepan, melt butter.
Turn heat to low, and stir in sugar. Let cook, stirring constantly, for 2-3 minutes.
Remove from heat, and stir in vanilla.
Let mixture cool for about 5 minutes.
Whisk in eggs until combined.
Add flour, cocoa powder, and salt. Whisk in until just incorporated.
Pour batter into prepared pan, spreading batter as needed.
Bake for 20-30 minutes. The edges should look done, but the center should still look shiny. A toothpick inserted in the center should come out with a few fudgy crumbs.
Cool completely.
To make the mousse, heat marshmallows, chocolate, and milk in a medium saucepan over low heat, stirring constantly until completely smooth.
Cool completely.
In a separate bowl, beat whipping cream to stiff beats.
Fold in cooled chocolate mixture.
Spread mousse evenly over brownies.
Chill brownies for at least 30 minutes, or until ready to serve.
Cover and chill leftover brownies.
Notes
I use salted butter. If you're using unsalted butter, increase salt to 3/4 teaspoon.
Be sure to properly measure the flour to get the chewy/fudgy brownie texture. To properly measure the flour, either weigh it or stir or sift the flour to break it up. Then lightly spoon into measuring cup and level.
I use regular unsweetened cocoa powder, not Dutch-processed.