Prep the tomatoes. Preheat an oven to 425°F / 220°C. Place halved tomatoes and shallots in a single layer on a large rimmed baking sheet. Drizzle with 3 Tbsp (45ml) olive oil, then season with 1 tsp Kosher salt and ¼ tsp black pepper.
Wrap the garlic. Remove the papery outer layers of 2 heads of garlic (or 1, if very large), but leave the individual garlic cloves wrapped. Use a sharp knife to slice off ¼-½” off the top of each head of garlic. Place each in a small square of aluminum foil, then drizzle with a little olive oil. Wrap the foil tightly around each garlic head, then place on the baking sheet along with the tomatoes.
Roast the tomatoes. Place in the oven, cook for 35-40 minutes, then cool slightly. Transfer the tomatoes and shallots to a blender or large soup pot (if using an immersion blender). Carefully unwrap the roasted garlic, then either squeeze the cloves out or use a small fork to remove from their skin. Add to the blender or soup pot.
Add remaining ingredients, then blend. To the blender, add 1 cup of packed basil leaves (and stock, if using). Stir or blend in ½ cup (120ml) heavy cream, then taste and adjust seasoning as needed.
Make the grilled cheese croutons. Butter one side of each slice of bread and sprinkle lightly with granulated garlic. Heat a large skillet or griddle over medium heat. Place two slices butter-side down in the pan, top evenly with grated Gruyère, and scatter basil leaves over the cheese. Top with remaining bread slices, butter-side up. Cover and cook for 3 minutes, then flip, cover again, and cook 2–3 minutes more, until golden and fully melted. Transfer to a cutting board, cool slightly, then cut into ½-inch croutons.
Assemble, then serve. Spoon the roasted tomato soup into bowls, then drizzle each with about 1-2 tsp of heavy cream. Sprinkle with flaky sea salt and freshly cracked black pepper, then top each bowl with grilled cheese croutons. Serve immediately!