Heat a large pot or Dutch oven over medium-high heat. Add ground beef and cook until browned, breaking it into pieces. Drain excess fat if necessary, leaving about 1 tablespoon.
Add diced onion (and carrots/celery if using) to the pot. Sauté until softened, about 5–7 minutes. Stir in minced garlic and cook 30 seconds until fragrant.
Push meat and veggies to the side, melt butter in the empty space, and sprinkle flour. Stir to form a roux and cook 1–2 minutes to remove raw flour flavor.
Slowly whisk in beef broth, then add diced potatoes, Worcestershire sauce, thyme, and bay leaf. Bring to a simmer and cook until potatoes are fork-tender, about 12–15 minutes.
Lower heat and stir in milk and 1 cup shredded cheddar. Warm gently until cheese melts—do not boil. Adjust seasoning with salt and pepper.
Ladle into bowls, top with additional cheddar and chives, and serve with crusty bread. Add crispy bacon or crushed chips for texture if desired.
Notes
To freeze: omit dairy when freezing; add milk and cheese when reheating.
Mash a few potato pieces in the pot for a thicker texture.