Warm the fat: Place a medium saucepan over medium heat.
Add the butter or chicken drippings. Let it melt and become foamy, but don’t let it brown.
Make the roux: Sprinkle in the flour. Whisk continuously for 1 to 2 minutes.
The mixture will look like a smooth paste. Cook just until it smells slightly nutty—this removes any raw flour taste.
Add the broth slowly: While whisking, pour in the chicken broth a little at a time. Keep whisking to prevent lumps.
The mixture will start to thicken quickly.
Pour in the milk: Add the milk in a steady stream, whisking the whole time. Return the mixture to a gentle simmer. It should be smooth and creamy.
Season it right: Stir in salt, pepper, garlic powder, onion powder, and a pinch of paprika or cayenne if using.
Taste and adjust the seasoning to your preference.
Simmer to finish: Keep the gravy at a gentle simmer for 3 to 5 minutes, whisking now and then, until it reaches your desired thickness. If using, fold in the shredded chicken.
Serve warm: Remove from heat. Garnish with chopped parsley if you like.
Serve over biscuits, mashed potatoes, rice, noodles, or roasted vegetables.