3lbsroma tomatoeshalved lengthwise, about 10–12 tomatoes
3shallots(peeled and halved)
1headgarlictop sliced off to expose cloves
3tbspextra virgin olive oildivided
1tspkosher saltfor roasting
1/2tspblack pepperfreshly cracked
1/4tspred pepper flakesoptional, for gentle heat
2tbspextra virgin olive oil
1mediumyellow oniondiced
3cupsvegetable brothlow-sodium preferred
114.5oz can crushed tomatoesSan Marzano preferred
1tspgranulated sugaroptional, to balance acidity
1/2cupheavy creamor full-fat coconut cream for dairy-free
1/2cupfresh basil leavesloosely packed, plus more for garnish
1tspkosher saltplus more to taste
1/2tspblack pepperto taste
1parmesanrindoptional but highly recommended
Get Recipe Ingredients
Instructions
Preheat your oven to 400°F (205°C). Line a large rimmed sheet pan with parchment paper or foil.
Arrange the halved roma tomatoes cut-side up on the sheet pan along with the halved shallots. Place the head of garlic cut-side up on the pan as well. Drizzle everything with 3 tablespoons of olive oil and season generously with salt, pepper, and red pepper flakes if using.
Roast for 40–45 minutes, until the tomatoes are deeply caramelized at the edges, slightly collapsed, and fragrant. The shallots should be soft and golden. Remove from the oven and let cool for 5 minutes.
Carefully squeeze the roasted garlic cloves out of their papery skins directly onto the sheet pan. Scrape all the roasted tomatoes, shallots, garlic, and every drop of the pan juices into a large bowl and set aside.
In a large Dutch oven or heavy-bottomed pot, heat 2 tablespoons of olive oil over medium heat. Add the diced yellow onion and cook, stirring occasionally, for 6–8 minutes until softened and translucent.
Add the roasted tomato mixture (including all juices) to the pot along with the crushed tomatoes and vegetable broth. If using, add the parmesan rind now. Stir to combine and bring to a gentle simmer over medium heat.
Simmer uncovered for 15 minutes, stirring occasionally, to allow the flavors to meld. Remove and discard the parmesan rind if used.
Remove the pot from heat and allow to cool for 5–10 minutes. Add the fresh basil leaves. Using an immersion blender, blend the soup directly in the pot until completely smooth. Alternatively, transfer in batches to a high-speed blender, venting the lid carefully, and blend until silky.
Return the soup to low heat (if it cooled). Stir in the heavy cream and sugar (if using). Taste and adjust salt, pepper, and acidity as needed. Simmer gently for 3–5 more minutes — do not boil after adding the cream.
Ladle into bowls and garnish with a swirl of cream, fresh basil leaves, a crack of black pepper, and a drizzle of good olive oil. Serve immediately with grilled cheese for dunking.
Notes
Storage: Refrigerate in an airtight container for up to 5 days. Freeze for up to 3 months in individual portions. Reheat on the stovetop over medium-low heat, adding a splash of broth if needed to loosen. Dairy-free swap: Replace heavy cream with full-fat coconut cream. Protein boost: Blend in one 15-oz can of drained white cannellini beans before adding cream for extra fiber and plant-based protein. Canned tomato version: Replace fresh romas with two 28-oz cans of whole peeled San Marzano tomatoes, drained and roasted the same way.