Pat the beef cubes dry with paper towels and season generously with salt and pepper.
Heat 2 tablespoons of oil in a large Dutch oven or heavy-bottomed pot over medium-high heat. Brown the beef in batches (about 3-4 minutes per batch), being careful not to overcrowd the pan. Remove browned meat to a plate and set aside.
In the same pot, reduce heat to medium-low. Add butter and remaining oil. Add the diced onions and cook slowly for 10-15 minutes until translucent and slightly golden, stirring occasionally.
Remove the pot from heat. Add the Hungarian sweet paprika and smoked paprika if using. Stir continuously for 30 seconds to prevent burning.
Return pot to low heat and add crushed caraway seeds and minced garlic. Cook for 1 minute until fragrant.
Add the browned beef back to the pot, along with any accumulated juices.
Add bell peppers and carrots. Cook for 5 minutes, stirring occasionally.
Add diced tomatoes, potatoes, bay leaves, and marjoram. Stir to combine.
Pour in the beef broth, making sure all ingredients are covered (add a bit more if needed).
Bring to a gentle simmer, then reduce heat to low. Cover and cook for 2-2.5 hours, stirring occasionally, until the meat is fork-tender.
Taste and adjust seasoning with salt and pepper.
Remove bay leaves before serving.
Ladle into bowls, add a dollop of sour cream to each serving, and sprinkle with fresh parsley.
Serve hot with crusty rye bread on the side.