Pat the chicken dry, then season it well with salt, pepper, garlic powder, onion powder, and paprika. Lightly coat the pieces in flour, shaking off any excess.
Warm the butter or oil in a large skillet over medium heat. Brown the chicken on both sides until golden, then transfer it to a plate. It does not need to be fully cooked at this stage.
Add the sliced onion to the same skillet and cook until softened. Stir in the garlic, then sprinkle in a little flour and cook briefly to remove the raw taste.
Slowly pour in the chicken broth, stirring constantly so the gravy stays smooth. Add the milk and keep stirring until the sauce thickens and looks creamy.
Return the chicken to the skillet, spoon gravy over the top, and cover. Let everything simmer gently until the chicken is cooked through and the gravy is rich and flavorful.
Taste the gravy and adjust the seasoning if needed. Sprinkle with fresh herbs if you like, then serve warm over your favorite sides.