Sauté aromatics. Heat olive oil in a large pot over medium heat. Add the diced onion with a pinch of salt and cook until soft and translucent, about 5–7 minutes.
Stir in the garlic and cook for 30 seconds, just until fragrant.
Build the tomato base. Stir in the tomato paste and cook for 1–2 minutes to caramelize it slightly. Add the crushed tomatoes, oregano, red pepper flakes (if using), bay leaf, and 4 cups of broth. Bring to a gentle simmer.
Season and simmer. Add 1 teaspoon of salt and several grinds of black pepper.
Let the soup simmer for 10 minutes to meld flavors.
Add the orzo. Stir in the orzo and simmer, stirring occasionally, until al dente, about 8–10 minutes. If the soup thickens too much, add more broth as needed.
Finish with basil and brightness. Turn off the heat. Remove the bay leaf.
Stir in chopped fresh basil, lemon zest, and a squeeze of lemon juice. Taste and adjust seasoning with more salt and pepper.
Make it creamy (optional). For a richer soup, stir in heavy cream or half-and-half. If you like greens, fold in baby spinach and let it wilt in the residual heat.
Serve. Ladle into bowls and top with freshly grated Parmesan and extra basil.
Add a drizzle of olive oil or a pinch of chili flakes if you like a little heat.