01 - Place ground beef in a large skillet over medium heat. Break the meat apart with a wooden spoon and cook until fully browned with no pink remaining, 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 continue cooking for 30 seconds until fragrant.
03 - Carefully drain off any excess rendered fat from the skillet, leaving approximately 1 to 2 tablespoons in the pan for flavor.
04 - Add unsalted butter to the skillet and stir until completely melted. Sprinkle the all-purpose flour evenly 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 vigorously to prevent any lumps from forming.
06 - Stir in the Worcestershire sauce, salt, black pepper, smoked paprika, and dried thyme until evenly combined throughout the mixture.
07 - Bring the gravy to a gentle simmer and cook for 5 to 7 minutes, stirring frequently, until it reaches your desired consistency and coats the back of a spoon.
08 - Taste the finished gravy and adjust salt and pepper as needed. Ladle hot over mashed potatoes, steamed rice, or split biscuits.