Place potatoes in a large pot, cover with salted water, and bring to a boil. Cook 15 to 20 minutes until fork-tender. Drain and mash with butter, milk, salt, and pepper. Set aside.
While potatoes cook, brown ground beef in a large skillet over medium-high heat, breaking it up as it cooks. Add diced onion and minced garlic; cook 3 to 4 minutes until onion is soft.
Sprinkle flour over the beef mixture and stir for about 1 minute to cook off the raw flour taste.
Pour in beef broth and Worcestershire sauce. Stir well and bring to a simmer. Cook 5 to 8 minutes, stirring occasionally, until gravy thickens.
Season with salt and pepper to taste. Serve beef and gravy over mashed potatoes.
