Cruz won 28 per cent of the vote in last night's primary, while Trump - who has in the past called Iowans "stupid" - took just 24 per cent. Marco Rubio secured a better-than-expected 23 per cent, putting him in good stead for next week's New Hampshire vote.
"Iowa has sent notice that the Republican nominee and the next President of the United States will not be chosen by the media, will not be chosen by the Washington establishment," Cruz said on winning.
Trump was dignified in the face of defeat, saying: "We finished second, and I have to say I am just honoured."
He also insisted he would go on to win - and beat the Democrat nominee. "We will go on to beat Hillary or Bernie, or whoever the hell they throw up there," he told his supporters.
"Iowa, we love you, we thank you, you're special. We will be back many, many times. In fact, I think I might come back here to buy a farm - OK?"
Clinton, who was easily the frontrunner coming into the campaign, suffered a huge set-back in the first test of her appeal to the electorate. With 99.99 per cent of the votes counted, the former secretary of state had secured just 49.9 per cent of the vote, compared with Sanders' 49.6 per cent.
She claimed victory with a "big sigh of relief" - but the fact it was a virtual tie means her campaign for President is already starting to show signs of stress.