Lando Norris held off local favorite Charles Leclerc to win a tense Monaco Grand Prix and claim a vital first win since the season opener.