In a large pot over medium-high heat, brown the ground meat until fully cooked and nicely browned. Drain excess grease if needed.
Add onion, carrots, and celery. Cook for 5 minutes, stirring occasionally, until softened.
Add garlic and cook for 30 seconds.
Stir in tomato paste and cook for 1 minute.
Sprinkle flour over the mixture and stir well. Cook for 1 minute.
Slowly pour in beef broth while stirring. Add Worcestershire sauce, thyme, rosemary (if using), pepper, salt, and bay leaf.
Add cubed potatoes. Bring to a gentle boil, then reduce to a simmer. Cover and cook 15 to 18 minutes, until potatoes are tender.
Mash some of the potatoes in the pot to thicken the soup.
Stir in peas and cook 2 to 3 minutes.
Lower heat and stir in milk. Warm through, then taste and adjust seasoning. Remove bay leaf.
Serve hot with mashed potatoes and cheese on top if desired.