Left-handed opener Iqbal, who turns 18 on Tuesday, smashed a rapidfire 51 for his maiden half-century as his team successfully chased a 192-run target on a good batting track at the Queen's Park Oval.
Iqbal was not the only teenager to play a big role in Bangladesh's second win over India in 15 one-dayers, as Saqibul Hasan (53) and wicket-keeper Mushfiqur Rahim (56 not out) put on 84 for the fourth wicket.
Bangladesh boosted their chances of qualifying for the next round. They will play Sri Lanka and debutants Bermuda in their next two games, while India need to win their remaining two matches in Group B stay in the contention.
"Our backs are up against the wall," said India skipper Rahul Dravid.
"It was a disappointing day. We didn't get enough runs on the board. I thought 240 would have been a good score but the wicket surprised us. Their bowlers kept it really tight and they didn't let us get away."
The stunning triumph was set up by Mortaza, who grabbed four wickets in a superb exhibition of fast bowling to rattle the famed Indian batting line-up. India were dismissed for 191, their lowest total against Bangladesh.
Only Sourav Ganguly (66) and Yuvraj Singh (47) managed to keep their batting reputation intact on India's first day in the tournament, which eventually ended in a nightmare.
It was Bangladesh's biggest day in the tournament since making their debut in 1999. They had just one win against a Test-playing nation when they beat Pakistan in England, but the result later came under suspicion of match-fixing.
Habibul Bashar's side were the deserving winners as they bowled with great discipline, fielded with enthusiasm and then batted boldly to stun their higher-ranked opponents.
"I just tried to play my natural game. I like to play my shots," said Iqbal.
Hasan added: "It's a good win and we knew that if we could bat 50 overs we would win."
Iqbal never gave the impression he was playing his fifth one-dayer as he treated the Indian attack with sheer contempt, hitting two sixes and seven fours in his 53-ball knock.
The pick of his shots was a huge six off left-arm fast bowler Zaheer Khan, the batsman stepping out to send the ball crashing into the stands. His audacious innings ended when he was caught behind off paceman Munaf Patel.
His blitz eventually demoralised India, who continued to struggle for wickets as Rahim and Hasan batted sensibly to ensure the efforts of Iqbal and Mortaza did not go waste.
The 18-year-old Rahim kept one intact with his second half-century, while the 19-year-old Hasan struck one six and five fours in his third half-century.
The morning session belonged to Mortaza, who jolted the Indian top order on a pitch which offered both bounce and movement. He not only took two early wickets, but also kept beating the bat during his fiery opening spell.
He was brilliantly supported by left-arm spinners Mohammad Rafique (3-35) and Abdur Razzak (3-38) on a day when Bangladesh kept the pressure on India right from the opening over.
Ganguly top-scored for India with a half-century, but even he too was not allowed to score freely by the Bangladeshi seamers and spinners.
Only Yuvraj Singh played with freedom in his team's below-par batting performance, smashing a 58-ball 47. He shared an 85-run stand for the fifth wicket with Ganguly.
Mortaza and left-arm seamer Syed Rasel kept the batsmen silent during their opening spells, while Razzak and Rafique continued the good job to reduce India to 72-4.
Both the teams observed a minute's silence before the match in memory of Bangladeshi cricketer Manjural Islam, who died in a road accident near Dhaka on Friday.
Fall of wickets: 1-6 (Sehwag), 2-21 (Uthappa), 3-40 (Tendulkar), 4-72 (Dravid), 5-157 (Yuvraj Singh), 6-158 (Ganguly), 7-159 (Dhoni), 8-159 (Harbhajan Singh), 9-159 (Agarkar), 10-191 (Patel)
Fall of wickets: 1-24 (Nafees), 2-69 (Iqbal), 3-79 (Ahmed), 4-163 (Hasan), 5-175 (Bashar).
Result: Bangladesh win by five wickets
Points: Bangladesh 2, India 0
Umpires: Aleem Dar (PAK) and Steve Davis (AUS)
TV umpire: Ian Howell (RSA)
Match referee: Alan Hurst (AUS)