Heat oil in a saucepan over medium. Cook onion for 5 minutes until soft, then add garlic and sauté 30 seconds.
Add crushed tomatoes, broth, basil, salt, and pepper. Simmer gently for 10 minutes.
Puree with an immersion blender until smooth. (Or let cool slightly and blend in batches.)
Stir in heavy cream and warm over low heat for 2–3 minutes. Taste and adjust seasoning.
Butter bread slices. In a skillet over medium, cook sandwiches 3–4 minutes per side until golden and melty.
Ladle soup into bowls, top with basil, and pair with grilled cheese for dunking.