In a large Dutch oven or soup pot, brown the ground beef until no longer pink. Drain off the fat; set the beef aside on a plate.
In the same pot, cook bacon over medium heat until lightly browned and the fat has rendered. You should have about 1 tablespoon of bacon drippings in the pot (if there’s a lot more than that, strain off any excess). Add the butter. When the butter melts, stir in the onion, celery, carrots, basil and parsley. Cook until the vegetables start to soften, about 3-5 minutes. Add the garlic and cook until fragrant, about 30 more seconds.
Stir in the flour and cook for 1-2 minutes. Gradually add the broth, scraping up any browned bits from the bottom of the pot.
Add potatoes and bay leaf. Bring to a simmer, cover, and simmer gently over low heat until the potatoes are tender, about 10-15 minutes. Stir the pot occasionally while the potatoes cook.
Reduce the heat to a very low flame. Stir in the cooked beef, Velveeta cheese, milk and paprika. Cook, stirring constantly, until the cheese melts. Discard bay leaf. Taste and season with salt and pepper, if necessary.
Ladle the soup into bowls and garnish with optional toppings.