Chop the tomatoes roughly. (I cut each tomato in half, and then cut each half in 6 pieces. So the pieces were about 1 inch thick.)
Chop the onion such that its pieces are roughly the same size as the tomato pieces. This will ensure both cook at the same pace.
Add chopped tomatoes and onion, ginger, garlic, black peppercorns, cinnamon stick, and seeds of black cardamoms in a pan.
Cover the pan with a lid and cook its contents on low heat till all tomato pieces release juice. This should take around 10 to 15 minutes. Stir every 5 minutes to ensure all pieces get cooked evenly.
After the tomatoes have released juice, turn up heat slightly and cook the tomatoes in its juice till they get tender. This should take around 10-15 minutes on medium heat. This time too, stir every 5 minutes to ensure that the tomatoes don't get burnt at the bottom. (Remember, you need to cook the tomatoes with the lid closed.)
After the tomato pieces become tender (in Hindi we say, "gal jana"), turn off heat and allow the mixture to cool down. If you are low on patience like me, sit the pan in another pan filled with water so that it cools faster.
Grind the mixture in a mixer and then use a big metal sieve to strain the mixture.
Use a spoon to press the mixture on the sieve to filter out the seeds and skin of the tomatoes.
Transfer the filtered mixture to a sauce pan and cook on medium heat to bring the mixture to a boil. Use a tall sauce pan such that the mixture doesn't fill more than 1/4th of the pan. You will know why, if you have read the writeup above. ;-) (I used the pan of my pressure cooker.)
When the mixture starts to bubble up, add black salt, and mix it properly with the mixture.
Continue to cook for another 10 minutes while stirring occasionally to ensure that the sauce doesn't stick to the bottom of the pan.
Add sugar and give it a good stir.
Cook the sauce till it reaches the desired consistency. (When you pour the sauce from a spoon it shouldn't pour down too easily.)
Turn off heat, allow the sauce to cool, and then add vinegar.
Mix well and transfer to an air-tight container. Refrigerate and use within a month.