Place potato chunks in a large pot and cover with cold water by 1 inch. Add 1 teaspoon salt. Bring to a boil over medium-high heat, then reduce to a simmer. Cook until fork-tender, about 15-20 minutes.
While potatoes cook, heat a large skillet over medium-high heat. Add ground beef, breaking it apart with a wooden spoon. Brown for 5-7 minutes until no pink remains. If your beef released excessive fat (more than 2 tablespoons), drain some but leave a little for flavor development.
Add diced onions to the beef and cook until translucent, about 3-4 minutes. Add garlic and cook for 30 seconds until fragrant. If using mushrooms, add them now and cook until they release their moisture, about 3 minutes. Season with ½ teaspoon salt and ¼ teaspoon pepper.
Sprinkle flour over the meat mixture and stir continuously for 1 minute to cook out the raw flour taste. Gradually pour in beef broth while stirring constantly to prevent lumps. Add Worcestershire sauce and thyme. Bring to a gentle simmer and cook for 5-7 minutes until the gravy thickens enough to coat the back of a spoon.
Drain the cooked potatoes thoroughly and return them to the hot pot. Allow them to steam dry for 1-2 minutes. Add warm milk and butter, then mash until smooth. Season with salt and pepper to taste. Fold in sour cream if desired.
Scoop generous portions of mashed potatoes onto plates, creating a small well in the center. Ladle the hot beef and gravy mixture over the potatoes. Garnish with fresh herbs if desired and serve immediately.