In a five to six-quart pot, sauté onions in olive oil over medium-high heat until soft and just beginning to brown.
Add garlic, bell pepper, and celery to the onion in the pot. Continue to cook for about four to five more minutes over medium-high heat. Celery and bell pepper should still be somewhat crunchy.
Add tomatoes and cook just until heated through, stirring the veggies several times to mix.
Stir in chicken broth, half & half, and heat mixture just until boiling, stirring well. Reduce heat and simmer for about 30 minutes to allow flavors to meld. Remove from heat, stir in balsamic vinegar, and season to taste with salt and pepper.
At this point, you can blend the soup with an immersion blender to make a smooth, creamy soup. If you do this, then reheat the soup until piping hot after blending. If you choose to serve it chunky, then serve it as is.
Garnish soup with one to two tablespoons grated Parmesan for each bowl and serve hot with crusty French bread or your mini heart grilled cheese sandwiches.