Mr Bush made the speech after being updated by the US military leader in Iraq, General Tommy Franks.
"We do not know the day of final victory, but we have seen the turning of the tide... Free nations will press on to victory," he said.
And he thanked the other nations that contributed troops to the US-led war, the UK, Australia and Poland.
He didn't actually go as far as saying the US won the war, or that it has finished, but that's what he means.
Legally not over
But the Whitehouse spokesperson Ari Fleischer warned the war is not over "legally".
According to the international rules on war - the Geneva Convention - when a war is legally over, the winning side must free prisoners-of-war and stop going after specific leaders.
The coalition forces don't want this because they are still trying to find Saddam Hussein and lots of his government officials.
So if they said it was legally over, they wouldn't be allowed to do this.
Fleischer also said the coalition forces in Iraq are still facing the occasional small gun fights.
Bush officially told the American people the war had started on 19 March.