Place 3 cups of low-sodium vegetable or chicken broth in a small saucepan and simmer over medium heat. Reduce the heat and maintain a bare simmer. Meanwhile, finely grate 2 ounces of Parmesan cheese (about 1 packed cup). Mince 1 medium shallot. Finely grate the zest of 1 small lemon, then halve the lemon
Heat 2 tablespoons olive oil in a large, high-sided sauté pan or Dutch oven over medium heat until shimmering.
Add the shallot and sauté until soft and translucent, about 5 minutes. Add 1 1/2 cups orzo, season with 1/2 teaspoon kosher salt and 1/4 teaspoon black pepper, and cook, stirring occasionally, until lightly toasted and fragrant, about 2 minutes.
Add 1/2 cup dry white wine, scrape up any browned bits from the bottom of the pan with a wooden spoon, and simmer until the wine has evaporated and the pan is almost dry, about 1 minute.
Begin incrementally adding the broth a 1/2 cup at a time, stirring constantly between each addition. Wait until the liquid has been almost completely absorbed by the orzo before adding the next 1/2 cup.
When about half of the broth has been added, stir in 1 bag of frozen artichokes. Continue adding more broth, a 1/2 cup at a time, and cook until all the broth is absorbed and the orzo is creamy and tender. The orzo will need 12 to 15 minutes of total cooking time.
Remove from the heat. Stir 5 ounces of baby spinach, a few handfuls at a time, until just wilted, 1 to 2 minutes. Squeeze the juice from the reserved lemon halves into the orzo. Add the reserved zest, 1 tablespoon unsalted butter, half of the grated cheese, and stir to combine. Taste and season with more kosher salt as needed. Serve immediately with the remaining grated cheese for topping as desired.