01 - Place a large skillet over medium heat and add the ground beef. Break the meat apart with a spoon and cook until fully browned with no pink remaining, approximately 5–7 minutes.
02 - Add the finely diced onion to the browned beef and cook for 2–3 minutes until softened. Stir in the minced garlic and cook for 30 seconds until fragrant.
03 - Drain any excess rendered fat from the skillet, leaving approximately 1–2 tablespoons in the pan to enhance flavor.
04 - Add the unsalted butter to the pan and stir until completely melted. Sprinkle the all-purpose flour over the meat mixture and cook for 1–2 minutes, stirring constantly to form a smooth roux.
05 - Slowly pour in the beef broth and whole milk while whisking constantly to prevent lumps from forming.
06 - Stir in the Worcestershire sauce, salt, black pepper, paprika, and dried thyme. Mix thoroughly to combine all seasonings evenly throughout the gravy.
07 - Bring the mixture to a gentle simmer and cook for 5–7 minutes, stirring frequently, until the gravy reaches your desired thickness and coats the back of a spoon.
08 - Taste the finished gravy and adjust the seasoning as needed. Serve hot ladled over mashed potatoes, steamed rice, or split biscuits.