In a large mixing bowl, whisk together the vinegar, garlic paste, ginger paste, yogurt, salt, black pepper, and ground red pepper.
Add the beef cubes and toss until evenly coated in the marinade.
Cover the bowl and refrigerate overnight, or marinate for at least 30 minutes for deeper flavor.
Heat the vegetable oil in a large heavy-bottomed pot over medium heat.
Add the chopped onions and cook until soft, translucent, and golden brown, about 10 minutes.
Add the marinated beef and cook, stirring frequently, until the outside of the beef is no longer pink, about 10 minutes.
Stir in the chopped tomatoes and cook for another 5 minutes until softened.
Pour in the water and bring the mixture to a gentle simmer.
Cover the pot, reduce the heat to medium-low, and cook for about 40 minutes or until the beef becomes tender.
Garnish the Beef Vindaloo with fresh cilantro before serving.