In a large pot of boiling water (generously salted), cook pasta until al dente according to package directions. Drain, reserving 1 cup of pasta water. Return pasta to pot.
Meanwhile, in a large skillet, heat 1 tablespoon oil over medium-high. Add onion and garlic, season with salt and pepper, cook, stirring occasionally, 3 to 4 minutes. Add wine and cook until evaporated.
Stir in artichokes and cook until starting to brown, 2 to 3 minutes. Add olives (optional - original recipe did not specify how many olives, I didn't use any) and half of the tomatoes; cook until tomatoes start to break down, 1 to 2 minutes. Add pasta to skillet. Stir in remaining tomatoes and 1 tablespoon oil. Thin with reserved pasta water if necessary to coat the spaghetti. Transfer to plates and garnish generously with cheese and basil.