Set the flank steak on a large cutting board. Using a chef’s knife, slice the steak lengthwise along one long side (without cutting all the way through the meat) and open it up like a book. Using a meat mallet, flatten the meat so it is about 1/4 inch thick. Sprinkle both sides of the meat with 1 tsp. salt and 1/2 tsp. pepper. For the stuffing, put the mozzarella, Parmigiano, breadcrumbs, and basil in a mini chopper or food processor and pulse to combine. Sprinkle the stuffing evenly over one side of the beef, and roll it up lengthwise jelly roll–style with the stuffing inside. Secure with kitchen twine in five or six places.
Heat half the oil in a large Dutch oven over medium-high heat until it’s shimmering. Add the beef and cook until it browns and releases easily from the pan, about 2 minutes. Flip and cook the other side until browned, about 5 more minutes. Transfer to a large plate.
Add the remaining 2 Tbs. oil and the onion to the pan, and lower the heat to medium. Sprinkle with 1/2 tsp. salt and cook, stirring, until the onion wilts completely and turns a light brown, about 8 minutes. Add the red wine and cook, stirring, until it almost completely reduces, about 2 minutes. Add the tomatoes and red pepper flakes and bring to a boil. Reduce to a gentle simmer and tuck the meat and mushrooms into the broth. Cover and cook, repositioning the meat occasionally, until the meat becomes tender and cuts easily with a paring knife, about 1-1/2 hours. Set the meat on a cutting board and let rest for 10 to 15 minutes. Thinly slice and serve topped with the sauce and vegetables.