Pat the shrimp dry with paper towels and season lightly with salt and black pepper. Heat olive oil and half the butter in a large deep skillet over medium-high heat. Add the shrimp in a single layer and cook 2 minutes per side until pink and opaque, then transfer to a plate.
Reduce the heat to medium and add the remaining butter to the skillet. Stir in the chopped shallot and cook 2 to 3 minutes until softened. Add the minced garlic and cook 30 seconds until fragrant.
Stir in the orzo and toast for 1 to 2 minutes, coating it in the butter and aromatics. Pour in the broth, scraping up any browned bits. Season with a pinch of salt, black pepper, and the red pepper flakes if using.
Bring the mixture to a gentle simmer and cook, stirring occasionally, for about 10 minutes or until the orzo is just tender and most of the liquid is absorbed.
Pour in the half and half and simmer 2 to 3 minutes more, stirring, until the sauce slightly thickens and the orzo is creamy.
Remove the pan from the heat and stir in the parmesan cheese until melted and smooth. Add the spinach, lemon zest, and lemon juice, stirring until the greens wilt. Taste and adjust seasoning with more salt, pepper, or lemon as needed.
Return the cooked shrimp and any juices to the skillet and gently fold into the creamy orzo. Top with fresh parsley or basil and serve warm.