Heat oil in a large deep skillet over medium-high heat.
Brown the beef, breaking it up as it cooks, 4–5 minutes. Season with salt and pepper; drain excess fat.
Stir in onion and cook until softened, 3–4 minutes. Add garlic and cook 30 seconds.
Mix in tomato paste and cook 1 minute to caramelize.
Pour in crushed tomatoes and broth. Add Italian seasoning, paprika, and red pepper flakes; stir well.
Stir in the pasta. Bring to a simmer, cover, and cook 12–14 minutes, stirring occasionally, until pasta is al dente.
Reduce heat to low. Fold in half the mozzarella and all the Parmesan until smooth and melty.
Scatter remaining mozzarella on top. Cover 2 minutes to melt, then finish with parsley. Rest 3 minutes before serving.