The Serb had to battle back from 3-0 down in the deciding set to book his place in the last 16.
After a blistering start, Djokovic had to battle back from 3-0 down in the deciding set to book his place in the last 16 on Thursday against Feliciano Lopez or Gilles Simon.
Djokovic is without a coach in the Spanish capital after bringing to an end a 10-year relationship with Marian Vajda in an attempt to reverse his dramatic slump in form over the past year.
The early signs were positive for the 12-time Grand Slam champion as despite losing his service in the opening game, he broke straight back to start a six-game streak to romp through the first set.
Almagro had taken just one set from four previous meetings with Djokovic, but willed on by a partisan home crowd, he held on to his serve despite more pressure from the Serb in the first game of the second set.
The Spaniard had to save two break points to hold for 4-3 and then took his chance to break with Djokovic serving to stay in the set.
The world number 75, who dipped down to the challenger tour after losing in the first round of the Australian Open earlier this year, then looked set for a monumental upset as he raced into a 3-0 lead in the decider.
However, a mixture of Almagro nerves and Djokovic upping his intensity saw the world number two react immediately to level at 3-3.
More Almagro errors flowed to give Djokovic another break for 6-5 and he served out for the match.
Djokovic could meet Rafael Nadal in the semi-finals.
However, the 14-time Grand Slam champion has a difficult route to that potential matchup as he faces Fabio Fognini later on Wednesday and potentially Nick Kyrgios in the third round.
Controversial Australian Kyrgios cruised past American Ryan Harrison 6-3, 6-3.
Kyrgios and Nadal have only met twice with the Australian making his breakthrough with a four-set win over the 14-time Grand Slam champion at Wimbledon in 2014.
Nadal, though, edged their only previous meeting on clay at the Rome Masters last year.
Fifth seed Milos Raonic is also into the last 16 as he got the better of a battle between two big servers 6-4, 6-4 over Gilles Muller.
Raonic will face Belgium's David Goffin next.
Kei Nishikori recovered from a dreadful start to beat Argentine Diego Schwartzman 1-6, 6-0, 6-4.
The world number eight has made at least the semi-finals in each of the last three years in Madrid and will face David Ferrer in round three.
Ferrer progressed as Jo-Wilfried Tsonga withdrew with a shoulder injury.
In the WTA Madrid Open, Svetlana Kuznetsova remained one of only three of the top 10 seeds left in the draw with a 6-4, 7-5 win over Wang Qiang to reach the quarter-finals.
Kuznetsova will face the winner of an intriguing clash between top seed Angelique Kerber and Eugenie Bouchard, who dumped out Maria Sharapova in thrilling fashion on Monday.