The Spanish KTM rider had lost his lead in stage three after a navigational error but covered the 326km stage in 4.16:43 to pull back 2:02 on French team-mate Cyril Despres, who was second in the stage.
Dutchman Frans Verhoeven (Sherco) came in third, 8:26 behind Coma.
Despres still remains in charge of the race though as he holds an 8:10 lead over Coma.
Yamaha's Helder Rodrigues of Portugal is a distant third, a full 26:48 back already.
"It was a very tough special, in particular at the beginning with the fast start," said Coma after the stage.
"Then, we had to focus on the navigation and tackle water, a lot of it, in the ríos. I tried to drive at a very high pace from the beginning, but it was difficult. I was able to overtake a few pilots and gain some time on Cyril.
"Fiambala and many other stages still lie ahead. That is the way things are right now. And I keep on fighting every day."