Saute the aromatics. Melt the butter in a large pot or Dutch oven set over medium heat. Add the onion and stir well. Let it cook for 4 to 5 minutes or until softened. Add the garlic, shallot, basil, oregano, tomato paste, sun-dried tomatoes, and red pepper flakes. Mix well and let it cook for 2 to 3 minutes.
Blend the aromatics. Transfer the onion mixture to a blender. Process until you get a smooth mixture. Then, pour the mixture back into the pot and set it aside.
Blend the tomatoes. Add the crushed tomatoes and diced tomatoes to the blender. Process until you get a smooth mixture. Pour the blended tomatoes into the pot.
Add broth. Gently stir the broth into the pot and let it come to a simmer over medium heat.
Add the heavy cream and milk. Whisk the cornstarch and heavy whipping cream in a small bowl. Pour it into the pot and mix everything together. Add in the milk and stir until thoroughly combined.
Stir in the cheese and bay leaves, and simmer. Add the parmesan to the pot and stir until completely melted and smooth, about 6 minutes. Add the bay leaves. Reduce the heat to low and let the soup simmer for another 10 minutes.
Finish and serve. Add salt, pepper, and sugar to taste. Stir well and remove the soup from the heat. Ladle soup into bowls and serve warm.
Notes
Tomato options: I prefer to use canned tomatoes in this soup, including fire-roasted crushed tomatoes, fire-roasted diced tomatoes, and a few sun-dried tomatoes. If you'd like to use fresh tomatoes, I suggest roasting them and continuing with the soup recipe.