Make the filling: Heat a drizzle of olive oil in a small pan and sauté the chopped onion and garlic until softened, about 3–4 minutes. Let cool slightly. Add the cooked onion mixture to a bowl along with the egg, prosciutto, breadcrumbs, parmesan and chopped parsley. Mix until well combined.
Prepare the steak: Lay the flank steak on a lined flat surface and dry with paper towels. Pound with a meat mallet until evenly flattened. Season both sides with salt and pepper.
Add the filling and roll: Spread the filling evenly over the steak, leaving a small border around the edges.
Starting from the long side, roll the steak tightly into a log. Tie with kitchen twine every 1–2 inches to secure. Season the outside with salt and pepper.
Sear the braciole: Heat a few tablespoons of olive oil in a large Dutch oven over medium-high heat. Sear the rolled braciole on all sides until browned, about 6–8 minutes total. Remove to a plate and set aside.
Make the sauce: In the same pot, add the chopped onion and cook until softened, about 4–5 minutes. Add the garlic and red pepper flakes and cook for another minute. Stir in the tomato paste and cook for 1–2 minutes to deepen the flavor.
Pour in the red wine, scraping up any browned bits from the bottom of the pot. Let the wine simmer and reduce by about half. Add the crushed tomatoes and about one cup of water, filling the can halfway with water to rinse. Season with salt and pepper.
Braise the braciole: Return the braciole to the pot along with any juices that collected on the plate. Partially cover and simmer gently for about 1½ hours, or until the meat is very tender.
Serve: Remove the braciole from the sauce and let rest for 10 minutes. Cut away the twine and slice into ½-inch rounds. Serve the slices with plenty of tomato sauce and garnish with fresh parsley and basil.