In a large skillet or saucepan with a lid, heat the butter and olive oil over medium heat. Add the diced onion and a pinch of salt. Cook, stirring occasionally, for 3–4 minutes, until the onion is soft and translucent. Stir in the minced garlic and cook for about 30 seconds, just until fragrant.
2 tablespoons unsalted butter, 1 tablespoon olive oil, 1 small yellow onion, 2 cloves garlic
Add the uncooked long-grain rice to the pan. Stir well to coat the rice in the butter and oil. Cook for 1–2 minutes, stirring, until some of the grains look slightly opaque and you smell a toasty aroma.
1 cup long-grain white rice
Pour in the chicken broth, then sprinkle in the salt, black pepper, and paprika (if using). Stir to combine. Bring the mixture to a gentle boil over medium-high heat, then immediately reduce the heat to low and cover the skillet with a tight-fitting lid.
2 cups low-sodium chicken broth, 1/2 teaspoon kosher salt, 1/4 teaspoon black pepper, 1/4 teaspoon paprika
Let the rice simmer on low for 15–18 minutes without lifting the lid if possible. At around 15 minutes, quickly check: the liquid should be absorbed and the rice tender. If it’s not quite done and looks dry, splash in 2–3 tablespoons of water or broth, cover, and cook another 2–3 minutes.
Turn the heat down to low (or off, if your burner runs hot). Gently fluff the rice with a fork to loosen the grains. Stir in the milk (or half-and-half) and cream cheese, if using. Warm for 1–2 minutes, stirring gently, until everything is steamy and smooth.
1/2 cup whole milk, 2 tablespoons cream cheese
Sprinkle in the shredded cheddar and Parmesan a handful at a time, stirring slowly after each addition. Keep the heat low so the cheese melts into a creamy sauce instead of turning grainy. Taste and adjust seasoning with a bit more salt or pepper if needed.
1 cup sharp cheddar cheese, 1/4 cup Parmesan cheese
Turn off the heat and let the cheesy rice sit for 3–5 minutes to thicken to a creamy-but-scoopable texture. Stir once more, then sprinkle with chopped parsley or chives before serving. If the rice is too thick, stir in a splash more warm milk or broth; if it’s too loose, let it sit uncovered for a few extra minutes or gently simmer on low, stirring, until it thickens.
2 tablespoons fresh parsley or chives