Bring a large sauce pot of water to a boil and cook pasta according to package directions for al dente pasta, about 7-8 minutes. Drain and set aside. Cover to keep warm.
While the water boils, heat the oil in a Dutch Oven over medium heat-high heat. Add the garlic and onion and cook for 2 to 3 minutes, or until onions become translucent.
Add the ground beef to the pot and break apart with a wooden spoon. Season with garlic powder, dried parsley, paprika, salt and pepper. Cook 6 to 7 minutes, or until browned and cooked through. Drain any rendered grease from the pan. Return the pot to the burner and reduce the heat to medium heat.
Mix in the fire roasted tomatoes, tomato sauce, and tomato paste. Whisk the flour into the beef broth and add the broth mixture and milk/broth to the pot with the hamburger. Stir to combine.
Bring the sauce to a boil, then reduce heat to a simmer. Cook uncovered, stirring regularly, for 10 minutes, or until the sauce thickens and is slightly reduced.
Remove from heat. Fold in the cheese (if including) and warm until the cheese is melted. Add the pasta and stir well to thoroughly coat the noodles. You can also keep the noodles and sauce separate to keep the pasta more tender and to prevent soggy noodles when stored (up to you!). Serve and enjoy.
One-pot recipe: Omit step 1. Starting at step 5: add the uncooked pasta and 1 cup of water or broth to the sauce. Bring the sauce mixture to a boil, then reduce heat to a simmer. Cook the pasta covered for roughly 12 to 15 minutes, or until the pasta is tender. Stir the pasta regularly to prevent it from sticking to the bottom of the pot. Remove from heat. Fold in the cheese (if including). Serve and enjoy!