Ingredients
Equipment
Method
Boil and tenderize the potatoes
- Add the peeled, cubed russet potatoes to a pot of salted water and boil for 15–18 minutes, until very tender. You’ll know they’re ready when a fork slides through easily.
Drain and mash
- Drain the potatoes thoroughly, then mash with the unsalted butter, warmed whole milk, and 1/2 teaspoon salt until very smooth. Keep mashing until no lumps remain and the texture looks fluffy.
Make a deep brown roux
- Melt 3 tablespoons butter in a saucepan over medium heat, then whisk in the all-purpose flour. Cook for 4–5 minutes, stirring constantly, until a deep brown roux forms and smells nutty.
Build the peppery brown gravy
- Slowly whisk the beef broth and chicken broth into the roux until smooth, with no visible lumps. Keep whisking as it thickens.
Simmer to thicken
- Stir in the soy sauce, black pepper, and onion powder, then simmer for 5 minutes until thick. The gravy should coat the back of a spoon.
Serve
- Spoon the mashed potatoes into bowls, make a well in the center, and fill with the glossy gravy. Let some gravy spill slightly over the sides for a classic look.
Notes
For the smoothest texture, mash while the potatoes are hot and add warm milk a little at a time. Store mashed potatoes and gravy separately in the fridge up to 3 days; reheat gently on the stove with a splash of milk or broth. Freezing is not recommended for the best gravy texture. For a lower-sodium swap, use reduced-sodium beef broth, chicken broth, and reduced-salt salted water.
