Heat the olive oil in a large pot over medium-high heat. Add the carrots, onions, and celery. Stir frequently for approximately 5 minutes or until the vegetables have softened and the onion is translucent. Add the garlic, oregano, basil, salt, and pepper. Cook and stir frequently for 2 minutes.
Add the diced tomatoes with juice, vegetable broth, and the bay leaf. Bring the mixture to a simmer. Lower heat to medium and continue to simmer for approximately 15 minutes, or until the carrots are tender.
While the soup is simmering, make the roux. In a large skillet melt the butter over medium heat. Once the butter has melted, slowly add the flour, about 1 tablespoon at a time. Mix the flour with a whisk. Continue to whisk the butter & flour mixture for 2 minutes or until the mixture is smooth and golden in color.
Slowly add 3 cups of the soup mixture into the skillet with the prepared roux. Immediately stir the mixture with the whisk. Once the mixture has thickened you will add the roux & soup mixture into the pot of soup and stir to incorporate. The soup will slowly start to thicken.
Add parmesan cheese to the soup and stir to mix in and melt. Add the warmed half and half and stir. Add more salt & pepper if desired.
Allow to soup to cook on low heat for 15-20 minutes, stirring occasionally.
Serve & enjoy with extra grated parmesan cheese on top.
Enjoy!