Bring a large pot of salted water to a boil. Cook angel hair according to package directions. Reserve 1/2 cup of the pasta water and then drain the pasta.
Cook bacon in a large nonstick skillet over medium heat until crispy. Remove with a slotted spoon and place on a paper towel lined plate. Pour all but 1 tablespoon of grease out of the skillet.
Place the skillet over medium high heat. Add the shrimp and minced garlic. Cook in the bacon grease, stirring occasionally, until the shrimp turn pink. Remove with a slotted spoon and place in a bowl. Set aside.
To the same skillet, add the drained diced tomatoes, heavy cream, and crushed red pepper flakes. Bring to a simmer and cook for 3 to 5 minutes to allow it to thicken slightly.
Turn the heat to low. Stir in the shredded mozzarella cheese and freshly shredded Parmesan cheese until fully melted and the sauce is smooth.
Add the baby spinach, cooked angel hair pasta, and the reserved shrimp and garlic mixture to the skillet. Stir everything together to combine, allowing the spinach to wilt slightly. Season to taste with salt and pepper. Stir the reserved crispy bacon back into the pasta.
If the sauce is too thick, add a splash of the reserved starchy pasta water until it reaches your desired consistency. Serve immediately with additional freshly shredded Parmesan cheese on top.