Add olive oil to 5 quart dutch oven over medium heat. Do not allow oil to get too hot. The goal is to "sweat" the onions and garlic, not saute them.
Add onion first, reduce heat if onions start to brown. Add garlic and salt after onion have been over the heat for a few minutes. Continue to cook until onions and garlic are soft.
Add diced tomatoes, tomato paste, vegetable broth and bay leaf. Bring to boil, then reduce to simmer. Simmer for one hour.
Pull out the bay leaf and reserve. With an immersion blender, or in small batches with a traditional blender, puree soup. Leave some of diced tomato intact, if desired. Add chopped carrots, cannellini beans and bay leaf into pureed soup. Simmer for at least another 30 minutes or up to hour.
Remove bay leaf and discard. Serve garnished with fresh chopped basil leaves and if you are not vegan, some freshly grated parmesan cheese.
OPTIONAL - if you have a rind from a wedge of parmesan cheese, add it to the soup after the puree step. If you do this, use a low sodium broth or try making your own broth from discarded peels of other veggies.