Cook the pasta according to the package directions, in heavily salted water. When the pasta is almost cooked, add the shrimp and cook for an additional 3 minutes. Add the asparagus and cook another 1 to 2 minutes. Drain everything, reserving 1 cup of the cooking liquid.
Meanwhile, heat a large saute pan over high heat. When the pan is hot, add 2 tablespoons of the olive oil. Add the onions and sauté until translucent, about 2 minutes. Add the garlic and saute until fragrant, about 1 minute. Season to taste with salt and pepper. Add the tomato and wine and simmer until the wine is almost evaporated, about 2 minutes.
Add the pasta mixture with a little bit of the cooking liquid to the saute pan. Add the cheese, parsley and crushed red pepper and remaining 2 tablespoons olive oil. Toss gently until everything is well combined and sauce is slightly thickened. Season to taste with salt and pepper, if desired, and serve.