Melt butter in a large saucepan over medium heat. Sprinkle in flour once butter has melted, whisking to create roux.
Let roux cook, while stirring continuously, for 2-3 minutes, or until golden, then continue to whisk and pour in milk and heavy cream.
Cook for another 5-10 minutes, or until mixture thickens.
Remove from heat and set aside until ready to use.
In a large Dutch oven or stock pot over medium-high heat, season sausage generously with salt and pepper and brown until no longer pink, then transfer to a paper towel-lined plate and set aside. (If using links, brown them, then slice into bite-sized pieces.)
Discard all but 2 tablespoons fat, then sauté onion and bell peppers for 10-12 minutes, or until softened and translucent.
Season with salt, pepper, Italian seasoning and red pepper flakes, then add garlic and cook for another 1-2 minutes, or until fragrant.
Return cooked sausage to pan, add tomato paste and stir into veggie mixture, then add tomato puree and diced tomatoes.
Pour in chicken broth and bring mixture to a boil, then reduce heat and let simmer for 15-20 minutes.
Stir in roux, then cook for another 5-10 minutes, or until warmed through.
Add cream cheese, velveeta and parmesan to soup, stirring until melted and incorporated. Taste and adjust seasoning, if needed.
Transfer to serving bowls and serve hot. Enjoy!
