In a large 5-6 quart capacity pot, melt 3 Tbsp butter over medium heat and add onions; cook until translucent, approximately 3-5 minutes.
Add 6 chopped garlic cloves and cook for 3-4 minutes, until aromatic.
Add 2 cans of tomatoes + 2 quarts homemade stock and bring to a boil. Reduce heat to a simmer, cover, and cook for 20 minutes.
Add basil, tearing the leaves and stems (if using) as you go. Puree with an immersion blender until smooth. Turn off the heat and add cream while stirring. Serve with salt, pepper, and Parmesan cheese to taste.