Travis Corlis, who watched the fight at Queensland's Lake Moondarra, near the mining town of Mount Isa, on Sunday, said the snake, thought to be a python, was about 10 feet (three metres) long and "healthy looking".
The crocodile, which the snake coiled itself around, was about three feet in length, he said.
"They had quite the struggle in the water," he told AFP. "It was an ongoing battle.
"We were just standing there in amazement watching it."
Corlis said several hours after he first saw the encounter, he noticed the snake had pulled the crocodile onto the banks of the lake and released its prey, which by this stage was dead.
"About 10 minutes later the crocodile was gone," he said, referring to the creature being eaten.
His wife Tiffany described the battle as "just unbelievable".
"We were sort of thinking that the snake had bitten off a little more than it could chew," she told the Australian Broadcasting Corporation.
"But it did. It actually ate the crocodile."
She added: "When you actually looked at the snake, you could actually see the crocodile's ridges, legs and everything inside its belly."
Tiffany said the crocodile had struggled to keep its head out of the water, and while both animals had clearly tired during their marathon fight for survival, "finally, the croc sort of gave in".
Travis Corlis said while crocodiles and snakes were both common in the area, he had never seen them battle each other in such a way.
Freshwater crocodiles are known to inhabit Lake Moondarra and Travis Corlis said a recent drought had seen the water level drop, making them more visible.
"I think it might just have been nature at its best," he said.