Heat the olive oil in a large stock pain. Add the onion and salt and cook until very fragrant and soft, about 10 minutes.
Add in the garlic, peppers, tomato paste and water. Whisk until paste is completely smooth, then simmer for 5 minutes, stirring occasionally. Add in the tomatoes and simmer another 15-20 minutes until tomatoes have broken down and sauce has thickened slightly.
Transfer to a blender (may have to do this in batches) or use an immersion blender and lightly puree; keeping some texture with a relatively smooth sauce.
Return back to the pot and taste, adding more salt as needed. Serve-- see below for tips on how to use this.
Notes
For the BEST spaghetti -- cook pasta until 1-2 minutes under al dente. If the package says 10 minutes, cook for 8 minutes, reserving some of the pasta water. Heat the tomato sauce over medium heat, then add the undercooked pasta along with a splash of water and toss continuously, adding another splash or two of pasta water as needed. Right before pasta is done, add in a tablespoon of butter (non-dairy butter) and toss again until melted. The butter provides a glossy finish, so don't skip it!