Cook ground beef and onion in a large skillet until meat is brown. Drain off any fat.
Stir in garlic, can of tomatoes (with juice), broth, worcestershire, paprika, salt, pepper, and uncooked pasta. Bring the mixture to a boil, then turn heat to low and simmer uncovered, for 10-12 minutes until pasta is tender.
While mixture is cooking, melt butter in a saucepan over medium heat. Whisk in flour, then milk. Bring to a boil, whisking constantly, and boil for at least a minute.
Turn heat to low and slowly stir in just a cup of the cheese. Whisk till melted. Stir into the meat mixture.
Sprinkle last cup of cheddar cheese on top. Cover and cook 2-3 minutes, or until cheese is melted.
Notes
In place of the homemade cheese sauce, you can just stir in 1/2 cup of heavy cream and a cup of grated cheese. Not quite as creamy, but still tasty!