In a large soup pot, heat the olive oil over medium-high heat. Once it’s hot, add the carrots, onion, and celery, sautéing for a few minutes until they soften.
Stir in the diced tomatoes, tomato paste, chicken broth, oregano, and dried basil. Bring the mixture to a gentle boil and let it cook for several minutes, until the vegetables are tender.
If you prefer a smoother soup, use an immersion blender or regular blender (in batches if needed) to puree the soup until it’s nice and smooth. Return the blended soup to the pot.
In a separate pot, create a roux by melting the butter over medium-low heat. Once melted, whisk in the flour and cook for about 10 minutes until it reaches a golden brown color.
Take a large ladle of the soup and add it to the roux to create a thick paste. Gradually add more soup to the roux, stirring until it’s smooth. Then, mix the roux back into the soup pot and stir well to combine.
Next, mix in the Parmesan cheese, half and half, salt, pepper, and chopped basil. Taste and add more oregano or basil if desired. Stir thoroughly and heat through for a few more minutes.
Store any leftovers covered in the fridge for up to a week. This soup is also delightful served in a homemade bread bowl! Enjoy!