The Orica-GreenEDGE sprinter took the gallop to the line at the end of the 180.7km stage from Nottingham ahead of Cavendish and Boy Van Poppel (UnitedHealthcare Pro Cycling) who took the overall lead.
Cavendish, who is looking to be released from his contract which has two years left to run, was led out superbly by the Team Sky train featuring stage one winner Luke Rowe and Tour de France champion Bradley Wiggins but lost position with 600m to go as the three-time world track champion took the stage.
Six riders escaped early on as the peloton crossed a number of stiff climbs in the Peak District.
Jack Bobridge (Green Edge), Russ Hampton (Raleigh UK), Pablo Urtasun (Euskaltel), Pete Williams (Node4), Richard Handley (Rapha Condor) and Matthias Krizek (Liquigas) went away after 3km and built up a lead of over three minutes.
But Sky and Endura worked on the front of the peloton to limit the advantage and although Williams and Bobridge persisted with their attack, they were caught with 23km remaining.
Marcin Bialoblocki (Node4) attempted a late counter-attack but was reeled in by the bunch with 3km left and it looked destined as if the world champion from the Isle of Man would bounce back from his crash at the end of Sunday's opening stage in Norwich with victory.
But he finished half a bike's length behind the 22-year-old from Geelong.
“I feel a huge sense of relief,” Howard said. “It’s been a long season looking for a win. I’ve tried time and time again. “I knew I had made a step forward in terms of my strength this year, and it’s taken this long to finally see the results.”
Howard is now second in the overall standings, locked on the same time as current leader Van Poppel.
The eight-stage Tour of Britain continues on Tuesday with a stage from Jedburgh to Dumfries