Add the olive oil to a large pan or Dutch oven and heat through.
Once warm, add in the onions and the shallots. You want to continually be stirring these so they don't burn and begin softening.
Add in garlic and continue to stir everything for about 1 minute.
Make sure heat is on medium and add in the butter. Stir it in as it melts. This will begin to caramelize the onions and shallots so make sure to continue stirring. You don't want the butter to burn.
Once the butter has fully melted and onions and shallots are beginning to caramelize, add in the orzo pasta and then your salt and pepper. Stir to lightly toast the pasta for about three minutes.
Add in half of the chicken broth and set heat to mow to medium. Continue to stir every now and then so that the orzo doesn't burn on the bottom. Cook for 5 minutes. This is a great time to prep any protein you might be using.
Add in the heavy cream and continue to stir occasionally. Cook for another 5 minutes.
Add in the rest of the broth and when to orzo begins to soak it up, add in the Parmesan and stir in until completely melted.
Stir in the spinach and cook until it is limp.
Serve immediately with your desired protein, the fresh thyme and parsley, extra Parmesan and additional salt and pepper.