Preheat the oven to 400°F and line a rimmed baking sheet with parchment paper.
Add the tomatoes, garlic cloves, ¼ teaspoon salt, and basil to a mixing bowl. Drizzle with 1 tablespoon olive oil. Toss until evenly coated.
Pour the tomatoes onto the prepared baking sheet and bake for 25-30 minutes or until they have split and are aromatic. Remove the tomatoes from the oven and set aside.
While the tomatoes roast, heat the remaining 2 tablespoons of olive oil in a large pot or Dutch oven over medium heat. Add the onion and carrots, and sauté for 7-8 minutes until the onions are tender and lightly golden.
Pour in the broth and increase the heat to medium-high. Once simmering, reduce the heat to medium and simmer for 10 minutes.
Add the roasted tomatoes, Dijon mustard, tomato paste, and the remaining ¾ teaspoon salt to the pot. Return to a simmer and cook for 10 more minutes.
Turn off the heat. Pour in the milk and very carefully transfer the soup to a high-speed blender. Blend with the lid vented until smooth or your desired consistency (alternatively, you can also blend the soup in the pot with an immersion blender).
Carefully return the soup to the pot. Stir in the parmesan cheese over low heat for 3-5 minutes or until smooth and creamy.
Stir in the basil leaves and balsamic. Season to taste with salt and pepper and serve hot topped with fresh basil, balsamic glaze, croutons, grated parmesan cheese, and/or red chili flakes.