He accused the companies of "falling over each other to point the finger of blame to somebody else," and said, "I will not tolerate any more finger pointing."
The president urged Congress to pass a legislative package the administration sent to the Hill this week that would raise the liability cap for responsible companies.
He also said that Interior Secretary Ken Salazar is working to reform the Minerals Management Service, which is in charge of approving new oil exploration.
"For too long there has been a cozy relationship between the oil companies and the agency that authorizes drilling," Obama said.
"To borrow an old phrase, we will trust but we will verify," he added, parroting a phrase President Ronald Reagan used about nuclear weapons inspections.
Obama spoke days after executives from BP, Transocean and Halliburton appeared before congressional panels and blamed each other for a malfunction aboard the Deepwater Horizon offshore rig.
An explosion on that rig last month killed 11 workers, and ruptured a well that has caused thousands of barrells of oil to funnel into the sea every day. It's unclear when the companies will be able to seal the leaks.
The accident has cast a shadow over efforts to expand offshore drilling, and could impact a debate over climate change legislation introduced in the Senate this week. Obama just weeks ago had announced his support for expanding offshore drilling in a move that attracted criticism from some of his supporters on the left.
Obama said many parties should accept blame for the spill, including the federal government.
"It is pretty clear that the system failed and it failed badly, and there is more than enough responsibility to go around and that includes the federal government," he said.
The president said he would not rest until the oil is cleaned up and the shoreline is protected.
"There is oil leaking, we need to stop it and we need to stop it as soon as possible," he said.