In a large pot over medium-high heat, cook ground beef, onion, and garlic, stirring occasionally, until beef is browned, 5 to 6 minutes. Add water, tomatoes, and taco seasoning, then cover and bring to a boil.
Break spaghetti in half lengthwise and add to sauce. Reduce heat to medium, cover, and simmer until pasta is tender, 12 to 14 minutes.
Remove from heat and stir in Velveeta, cheddar, and cilantro until cheese is melted. Serve topped with more cilantro and sour cream, if using.