Heat olive oil in a dutch oven or large soup pot over medium heat. Add chopped onions and cook until soft and just beginning to brown (about 8 minutes), stirring frequently.
Add minced garlic, stirring until fragrant (about 30 seconds).
Add tomatoes, juice, chicken stock, sugar, bread crumbs and pepper. Stir to combine. Bring to a gentle boil. Reduce heat, cover and simmer for 20 minutes, stirring occasionally.
Remove from heat. Using an immersion blender, carefully puree tomato mixture. If you don't have an immersion blender, place in a regular blender in small batches (exercise caution while blending hot liquids – blend small amounts at a time and hold down the top of blender pitcher while blending because there is a risk of the top blowing off and hot liquids to blow out!) and return to pot and stir well.
Return to oven burner over medium heat. Add milk and basil. Stir to combine. Simmer (covered) for an additional 15 minutes, stirring occasionally.
Top with Parmesan cheese and/or croutons when serving (optional).