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.
Chocolate Mousse
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
Butter: I use salted butter. If you use unsalted butter, increase the salt to 3/4 teaspoon.
Flour: It's key to properly measure the flour. Using too much flour will give you cakier brownies. To properly measure it, either weigh it (click on "metric" just above the ingredients) or sift or stir it to break it up, lightly spoon it into a measuring cup, and level.
Cocoa powder: I use unsweetened cocoa powder (like Hershey's, Trader Joe's, or Ghirardelli) in this recipe. Different brands of cocoa powder will give you lighter or darker chocolate mousse.
Milk: You can use any milk from skim milk to whole milk.
Whipped cream: If you need some extra tips and pointers on how to make whipped cream, this post has that info.