Preheat oven to 400 degrees. Line a sheet pan with aluminum foil.
Quarter tomatoes. Toss with a few drizzles of olive oil and spread in a single layer on the prepared sheet pan. Sprinkle with salt and pepper. Roast for about 45 minutes or until caramelized and luscious.
Make the soup:
Heat oil in a large Dutch oven over medium heat. Add onion, carrot, and red pepper. Cook until onion is translucent and carrots are getting soft, about 7-8 minutes. Add vinegar and cook for another minute, while stirring.
Turn flame to low and add flour, stirring into the vegetables. Add tomato paste and cook for an additional minute. Slowly pour in the chicken broth, stirring constantly to avoid lumps. Add bay leaf and tomatoes. Boost the heat to medium-high and bring to a boil, stirring constantly, then reduce heat and allow to simmer for 30 minutes, stirring occasionally.
Remove from heat and remove bay leaf. Puree using an immersion blender (if using a standard blender, allow to cool slightly before blending, and only do about 1/3 of the soup at a time so as to avoid burns!) until the soup is your desired consistency. Return soup to the pot (if using a standard blender) and add the milk. Season with salt and pepper to taste. If not serving immediately, cool to room temperature before storing in airtight containers and freezing.
Notes
Use almond milk to make this soup vegan, or whole milk to make it extra rich and creamy.