Cook bowtie pasta in salted boiling water until al dente, about 10 minutes. Reserve ½ cup pasta water, then drain and set aside.
Set a large deep skillet over medium high heat. Add ground beef and a little olive oil if the pan is dry. Cook 5 to 7 minutes, breaking it up, until browned. Drain extra grease.
Add diced onion and cook 3 to 4 minutes until softened. Stir in garlic and cook about 30 seconds.
Add butter to the skillet and let it melt. Sprinkle flour over everything and stir 1 to 2 minutes to form a paste.
Slowly pour in beef broth while stirring, then add cream. Stir in Italian seasoning, garlic powder, onion powder, salt, and pepper. Simmer on medium low 3 to 5 minutes until slightly thickened.
Add the drained bowties to the skillet and toss in the sauce. If it seems too thick, add a splash of pasta water.
Turn heat to low. Stir in mozzarella and Parmesan a handful at a time until melted and creamy. Taste and adjust salt and pepper.
Let sit off the heat 2 to 3 minutes so the sauce clings to the pasta. Garnish with parsley or green onions if you like and serve hot.
