Cook the spaghetti according to the package directions.
Meanwhile, heat the oil in a large skillet over medium-high heat. Add the beef and the onion and cook until the meat is no longer pink, 5 to 6 minutes.
Add the tomatoes and the chili powder and season with ½ teaspoon salt and ½ teaspoon pepper. Lower the heat and simmer until thick, 3 to 5 minutes.
Toss with the spaghetti and serve in the taco shells with the Cheddar, sour cream, and cilantro, if desired.