In a large Dutch oven or heavy-bottomed pot, cook the chopped bacon over medium heat until crispy, about 5-6 minutes. Remove the bacon with a slotted spoon and set aside on paper towels, leaving the bacon fat in the pot.
Add the ground beef to the pot with the bacon fat and brown it thoroughly, breaking it up with a wooden spoon as it cooks, about 5-7 minutes. Season with a pinch of salt and pepper. Once browned, transfer the meat to a bowl, leaving about 1 tablespoon of fat in the pot.
Add the diced onion, carrots, and celery to the pot and sauté until softened, about 5 minutes. Add the minced garlic and cook for another 30 seconds until fragrant. Stir in the tomato paste and cook for 1 minute to deepen the flavor.
Return the cooked ground beef to the pot, then add the beef broth and diced potatoes. Bring to a boil, then reduce heat and simmer, partially covered, until the potatoes are tender, about 15 minutes.
While the soup simmers, melt the butter in a medium saucepan over medium heat. Whisk in the flour and cook for 1-2 minutes to remove the raw flour taste. Gradually whisk in the milk and continue stirring until the mixture thickens slightly, about 3-4 minutes.
Remove from heat and stir in the shredded cheese, a handful at a time, until completely melted and smooth. Add the Dijon mustard and Worcestershire sauce, stirring to combine.
Slowly pour the cheese sauce into the soup pot, stirring constantly to incorporate. Let the soup simmer for an additional 5 minutes to meld the flavors, being careful not to boil (which can cause the cheese to separate).
Taste and adjust seasonings as needed with salt and pepper. Stir in most of the reserved bacon, saving some for garnish.
Serve hot with your choice of garnishes like diced pickles, extra cheese, fresh parsley, reserved bacon bits, or diced tomatoes.