Brown spent Saturday night at an airfield in Kandahar - the first time he has stayed overnight in either Afghanistan or Iraq. For security reasons, his pre-holiday visit was not officially announced until Sunday.
The prime minister, who faces public opposition to the war at home, has announced he is sending at least 500 more troops to Afghanistan to join the 9,500 already deployed, mostly in southern Afghanistan. He stressed the extra troops were needed to battle the Taliban insurgency, stabilize the nation, and keep terrorists from using the country as a staging ground for attacks in Britain and elsewhere.
He offered condolences to the families of 100 British soldiers who have died in the war this year. At least 237 British soldiers have been killed since the war began after the 2001 U.S.-led invasion, which topped the Taliban regime.
Brown also worked to improve relations with Karzai after sharply criticizing the Afghan leader for corruption within the government.
Karzai told Brown he was working to assemble a slate of ministers for his second term, which he will announce in coming days.
"It is the request of the international community and Afghans to improve the security and stability and fight corruption," Karzai said.
Brown said, "With Karzai, we have good cooperation and we're hoping with the new Cabinet to work on fighting corruption and take a step toward improving security in Afghanistan."
Karzai invited Brown to visit the governor's house in neighboring Helmand province where many of the British troops are deployed, but bad weather prevented the trip.
A crowd estimated at 600, which included British troops and Afghan elders, clerics and villagers, waited for two hours in a hall to see Brown, but his flight was canceled because of cloud cover, according to Daud Ahmadi, spokesman for the governor of Helmand province.