The fire began in the intensive care unit of the private SUM hospital in the city of Bhubaneswar in Odisha state and spread to other areas, officials say.
An electrical short circuit is believed to be the cause. Most of the victims reportedly died from smoke inhalation.
Dozens of patients were taken to other medical facilities in the city. PM Narendra Modi said he was "anguished" by the tragedy.
"The fire left 20 people dead and more than 100 people injured. They have been admitted to various hospitals in Bhubaneswar and the medical college in Cuttack," the state's health secretary, Arati Ahuja, told the BBC.
Many of the injured are in a critical condition. Earlier reports had put the death toll at 23.