Place the peeled and cubed potatoes into a large pot of salted water. Bring to a boil and cook for 15–20 minutes, or until fork-tender.
While the potatoes cook, combine the ground beef, breadcrumbs, egg, grated onion, garlic, Worcestershire sauce, Dijon mustard, salt, and pepper in a large mixing bowl.
Mix gently until just combined. Avoid overmixing to keep the meatballs tender.
Roll the mixture into meatballs about 1½ inches in diameter.
Heat a large skillet over medium heat with a small amount of oil if needed. Brown the meatballs on all sides in batches.
Transfer the browned meatballs to a plate.
In the same skillet, melt the butter and cook the sliced onion until softened and lightly caramelized.
Sprinkle the flour over the onions and stir for about one minute.
Slowly whisk in the beef broth until smooth.
Stir in Worcestershire sauce and dried thyme.
Return the Salisbury Steak Meatballs to the skillet. Cover with gravy and simmer for 10–15 minutes until cooked through and the gravy has thickened.
Drain the cooked potatoes and return them to the warm pot.
Add butter, warm milk, garlic, parsley, thyme, and salt.
Mash until creamy and smooth.
Serve the meatballs over a generous scoop of garlic herb mashed potatoes and spoon the rich homemade brown gravy over everything.