A security source told Khaama Press at least 20 people were killed, and another 30 were injured and transported to nearby health facilities. "They are both dead", he added.
Herat police spokesman Farhad Jilani told Pajhwok Afghan News two suicide bombers targeted the Jawadia mosque of the Shiite minority in Bakrabad area of Herat City.
About 30 people are said to be wounded, and local officials say the death toll is expected to rise.
Hadid said he saw several pieces of a body that was being identified as the assailant.
Reuters also reported grenades were thrown during the attack, citing local police.
Some news agencies reported that one man acted as the suicide bomber whilst a second opened fire on worshippers in the predominantly Shiite region.
Herat, on the border with Iran, is considered one of the most peaceful cities of Afghanistan.
There is no immediate claim of responsibility for the attack.
The attack comes a day after an attack on the Iraqi embassy in Kabul, which was claimed by the ISIS, killed two people.
Afghanistan is still suffering from insecurity and violence years after the United States and its allies invaded the country in 2001 as part of Washington's so-called war on terror.
Afghanistan's national unity government said it strongly condemned the Herat attack, describing it in a statement as an "anti-Islam act".