Brunno, muito obrigado. A sua dica foi parte da solução. O código JS ficou da forma abaixo, porém tinha um outro problema que relato após o código.
<script>
    function decrementaQuantidade(produtoId) {
        var parametros = { produtoId: produtoId };       
      $.post("@Url.Action("DecrementaQuantidade", "Produto")", parametros, atualizaQuantidade);             
    }
    function atualizaQuantidade(produto) {
        var elementoQuantidade = $("#quantidade_" + produto.Id);
        elementoQuantidade.html(produto.Quantidade);
    }  
</script>
O outro problema que encontrei, foi referente ao global.asax. No método RegisterRoutes() tive que colocar a rota Default, no topo e as demais abaixo. Pois toda vez que o servidor solicitava a action 'DecrementaQuantidade' do Controller Produto, ele não encontrava e não fazia nada;
Então meu metodo ficou da seguinte forma:
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            ); //esse método tem que vir primeiro para funcionar.
            routes.MapRoute("ListaProdutos",
                "produtos", new { controller = "Produto", action = "Index" }); //Nome da rota, url, objeto controller e action
            routes.MapRoute("VisualizaProduto",
                "produto/{id}", new { controller = "Produto", action = "Visualiza" }); // a url com {id} indica que recebe id como parametro.
          }
obrigado!