Navalny was detained last month after returning to Russia from Germany, where he was being treated for a near-fatal nerve agent attack.
He has blamed Russian President Vladimir Putin for the attack and says the charges against him are fabricated.
The Kremlin denies any involvement in his poisoning.
Navalny was accused of breaking the terms of a 2014 suspended sentence for embezzlement that required him to report regularly to Russian police.
In court, in a speech that referenced both the Bible and the Harry Potter series, he argued the charges were “absurd” as he was unable to report to the police while recovering from the nerve agent attack.
But the judge rejected his case and he will return to the penal colony where he is serving his time. The judge did, though, cut his six weeks off the nearly three-year sentence imposed.
Navalny faces another appearance in court in Saturday, on charges of slandering a World War Two veteran who praised President Putin.
When he was led into the dock, Alexei Navalny made the V for Victory sign.
But when the judgement came he had little to celebrate.
His prison sentence was upheld (though reduced slightly, by a month-and-a-half).
Moscow will now expect more criticism and pressure from the West. This week President Putin’s spokesman accused America and Europe of talking about sanctions with “maniacal persistence”.
But the Kremlin will try to turn Western criticism in its favour – to bolster the official narrative that Navalny is a Western stooge and that Russia is a country under siege.
The European Court of Human Rights, of which Russia is a member, says Navalny should be released out of concern for his life. But Russia said the call was “unlawful”.
Navalny’s supporters see the charges as an attempt to silence him and thwart his political ambitions.
He has been a persistent thorn in the side of President Putin, making allegations of corruption including a claim the president owns a lavish palace by the Black Sea.
European foreign ministers are set to meet on Monday to discuss imposing further sanctions on Russia over the case.
There are divisions among EU members, with Germany going ahead with the Nord Stream 2 project which would transfer gas directly from Russia to Germany.
The project is opposed by Poland and the Baltic states. On Friday Lithuania said it should be paused until after September’s parliamentary elections in Russia.