1In a large skillet or Dutch oven, cook the bacon until crispy. Remove with a slotted spoon and set aside, leaving about 2 tablespoons of bacon grease in the pan.
2Add the ground beef and onion. Cook until the beef is browned and the onion is soft.
3Stir in the garlic and cook for 30 seconds. Add the tomato paste, Worcestershire sauce, Dijon mustard, paprika, onion powder, garlic powder, salt, and pepper. Cook for another minute.
4Pour in the beef broth and milk, then stir in the uncooked macaroni. Bring to a boil.
5Reduce the heat to low, cover, and simmer until the pasta is tender.
6Remove from the heat. Stir in the cream cheese until smooth, then mix in the cheddar cheese a handful at a time until melted. Fold in the sour cream, if using.
7Stir most of the bacon back into the pasta, reserving a little for the top.
8Garnish with the remaining bacon and green onions.