01 - In a large skillet over medium heat, add the ground beef. Break the meat apart with a spoon and cook until fully browned and no longer pink, approximately 5 to 7 minutes.
02 - Add the finely diced onion to the browned beef and cook for 2 to 3 minutes until softened. Stir in the minced garlic and cook for an additional 30 seconds until fragrant.
03 - Drain any excess grease from the skillet, leaving approximately 1 to 2 tablespoons of rendered fat in the pan for flavor.
04 - Add the unsalted butter to the skillet and stir until completely melted. Sprinkle the all-purpose flour over the meat mixture and cook for 1 to 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, ground 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 to 7 minutes, stirring frequently, until the gravy reaches your desired consistency and thickness.
08 - Taste the finished gravy and adjust the seasoning with additional salt or pepper as needed. Serve hot ladled over mashed potatoes, steamed rice, or split biscuits.