Add peeled, quartered potatoes to a large pot and cover with cold water. Salt the water generously. Bring to a boil, then lower heat and simmer for 20 minutes or until fork-tender.
Drain and return the hot potatoes to the pot. Add butter and milk, then mash until smooth and creamy. Season with salt and pepper. Cover to keep warm.
In a large skillet over medium-high heat, cook ground beef until browned and no longer pink. Break it up as it cooks. Drain off excess fat.
Add diced onion and minced garlic to the beef. Cook for 5 minutes until the onion is soft and translucent.
Sprinkle flour over the beef mixture. Stir well and cook for 2 minutes to eliminate the raw flour taste.
Slowly pour in beef broth while stirring, scraping up any browned bits from the pan. Stir in Worcestershire sauce.
Simmer for 5 minutes until the gravy thickens. Add frozen peas and carrots, if using, and simmer for 2–3 more minutes.
Spoon mashed potatoes onto plates or bowls. Top generously with beef and gravy. Serve hot.