Heat a saucepan over medium heat until hot. Add oil and wait for 5-10 seconds until the oil is hot. Add diced onion, minced garlic. Saute for 1 minute until the onion is fragrant.
Stir in tomatoes and cover the saucepan with lid. Cook over high heat until boiling. Remove cover and reduce heat to medium low. Add the remaining ingredients. Stir occasionally to prevent the tomatoes from burning on the bottom of the pan. Cook without cover for 1 hour 20 minutes.
Let the cooked ketchup cool slightly. If you prefer to remove the tomato seeds and skin, pour it over a fine-mesh strainer or use Victorio food strainer to get the smooth ketchup. If you prefer to keep the seeds and skin in your ketchup, pour it into a Vitamix blender and blend until smooth.
Divide the ketchup into small containers. They can be frozen up to 3 months or longer.