Heat 2 tablespoons olive oil in a large skillet over medium heat. Add the chopped onion and cook until translucent, 3–4 minutes. Stir in garlic and red pepper flakes for 30 seconds. Add the orzo and toast, stirring, for 1–2 minutes.
Pour in broth, bring to a gentle boil, reduce heat and simmer, stirring occasionally, for 8–10 minutes until orzo is nearly al dente and most liquid is absorbed.
Season shrimp with salt and pepper. In a separate skillet, heat remaining 1 tablespoon olive oil over medium-high heat. Cook shrimp 1–2 minutes per side until pink. Remove. Quickly sauté tomatoes in the same skillet until they blister, about 2 minutes.
When orzo is tender, stir in lemon zest, lemon juice, butter (if using), and spinach. Toss until spinach wilts—1–2 minutes. Fold in shrimp and tomatoes, adjust seasoning with salt and pepper, and garnish with parsley and Parmesan.
Notes
Leftovers keep well for up to 2 days; reheat gently with a splash of broth to loosen the orzo.
Substitute gluten-free pasta or rice for orzo to make it gluten-free—adjust liquid and cooking time.
For a richer finish, stir in a tablespoon of cream or mascarpone at the end.