Preheat the oven to 350 degrees F. Lightly grease a 9X13-inch glass or ceramic dish with cooking spray and set aside.
Cook the pasta in a large pot of salted boiling water a few minutes short of al dente (the noodles will finish cooking in the oven). Drain and toss with a tablespoon of olive oil to prevent sticking and set aside.
In a large, nonstick 12 inch skillet, heat the butter and olive oil until rippling and hot. Add the onion and mushrooms and cook for 6-7 minutes, until the onions are translucent and the mushrooms are golden and have given up most of their liquid. Stir in the garlic and cook for 30 seconds or so until fragrant.
Sprinkle the flour over the onions and mushrooms along with the salt, pepper and red pepper flakes. Whisk or stir constantly for a minute or so over medium heat. The mixture will be a bit crumbly; that’s ok.
Gradually add the chicken broth and milk, whisking quickly and constantly to avoid lumps. Stir, bringing the mixture to a simmer, and cook until slightly thickened, 4-5 minutes. Add the diced tomatoes and heat through.
Remove the skillet from the heat and stir in the mozzarella and fontina cheeses, one handful at a time, until the cheese is melted and the sauce is smooth and creamy. Stir in the parsley and add any additional salt and pepper to taste, if needed. Add the cooked chicken and stir to combine.
Toss the sauce and cooked pasta together and spread evenly in the prepared dish. Sprinkle the Asiago and Parmesan cheeses over the top. Cover the dish with lightly greased aluminum foil and cook for 20 minutes. Uncover and bake for 15 minutes more, until the edges are golden and bubbling.
Let the casserole rest for for 10 minutes or so before serving.