Bloody bodies were strewn in the dirt of Mumbai's crowded neighborhoods and markets. Doors were ripped off storefronts, motorcycles were charred and a bus stop was shredded. After the blasts in three separate neighborhoods, police set up checkpoints and were put on high alert.
The bombings came just months after peace talks resumed between India and Pakistan, which New Delhi has blamed for past attacks.
Arup Patnaik, a top police officer, said the attackers used improvised explosive devices in the attack, hidden in an umbrella in the Jhaveri Bazaar jewelry market and kept in a car in the business district of Opera House.
The third blast in Dadar area was caused by an explosive device concealed in an electric meter at a bus stop, the Press Trust of India news agency said.
Prime Minister Manmohan Singh condemned the blasts and appealed to the people of Mumbai "to remain calm and show a united face."
There was no immediate claim of responsibility, and Indian officials refused to speculate on who might be behind the blasts.
Indian officials have accused Pakistan's powerful spy agency of helping coordinate and fund earlier attacks, including the Mumbai siege, which killed 166 people over three days. Peace talks between the countries were suspended after the siege and resumed only recently.
Pakistan's government expressed distress about the loss of lives and injuries soon after Wednesday's blasts were reported.
U.S. President Barack Obama also condemned the "outrageous attacks."
"The American people will stand with the Indian people in times of trial, and we will offer support to India's efforts to bring the perpetrators of these terrible crimes to justice," he said in a statement. "I have no doubt that India will overcome these deplorable terrorist attacks."
Secretary of State Hillary Rodham Clinton said she will go ahead with her plans to visit India next week despite the bombings. Standing with India "is more important than ever," she said.
The bombings began with an explosion that ripped through the famed Jhaveri Bazaar jewelry market at 6:54 p.m. A minute later, a blast hit the busy business district of Opera House, several miles (kilometers) away in southern Mumbai. At 7:05 p.m., the third bomb exploded in the crowded neighborhood of Dadar in central Mumbai, according to police.
Because of the close timing of the blasts, "we infer that this was a coordinated attack by terrorists," Home Minister Palaniappan Chidambaram said.
A lifeless body lay on a cart. Survivors carried the wounded to taxis. One man was dragged out of the area on a red board used as a stretcher. Bleeding victims crowded into the back of a cargo truck to be taken to a hospital, where wards were filled with the wounded, slathered in white burn cream.
At Jhaveri Bazaar, a witness described two motorcycles exploding in flames and saw at least six bodies.
"People were shouting 'Help me, help me,"' the man told Headlines Today television.
People hugged and wept. Crowds gathered in the blast areas as police questioned witnesses, and investigators wearing gloves sifted through the debris for clues.
The government said the blasts killed 21 people and wounded 141 others.
"India is not going to cow down," Cabinet minister Farooq Abdullah said. "Let those perpetrators of this terror remember, we will find them and Inshallah (God willing) we will give them the justice that India believes in."
A U.S. official said there were no immediate claims of responsibility, or firm indication of which terrorist group might be behind the attack. The official spoke on condition of anonymity to discuss matters of intelligence.
The blasts marked the first major attack on Mumbai since 10 militants laid siege to the city for 60 hours in November 2008. That attack targeted two luxury hotels, a Jewish center and a busy train station.
C. Uday Bhaskar, a defense analyst, said the bombings showed that Mumbai remained vulnerable despite precautions taken after the 2008 attack.
"The local police still does not have either the capability or the capacity to pre-empt such attacks, and this is going to be a constant challenge," he said.
Some media incorrectly reported Wednesday's blasts happened on the birthday of Ajmal Kasab, the only surviving gunman from the 2008 Mumbai attacks. Kasab, who was sentenced to death in Mumbai, was born on Sept. 13.
The city has been on edge since the 2008 attack. In December, authorities deployed extra police on city streets after receiving intelligence that a Pakistan-based militant group was planning an attack over New Year's weekend.
In March 2010, Mumbai police said they prevented a major terrorist strike after they arrested two Indian men, who, police said, were preparing to hit several targets in the city. In September, police issued a terrorism alert for the city during a popular Hindu festival.
Last month, India and Pakistan held their first formal talks on the disputed region of Kashmir since the 2008 Mumbai attacks. Both nuclear-armed nations claim Kashmir in its entirety, and have fought two of their three wars over the region since they gained independence from Britain in 1947.
Naqvi reported from New Delhi. Associated Press writers Ravi Nessman in New Delhi and Kimberly Dozier in Washington contributed to this report.