Bring a large pot of salted water to a boil. Add the potatoes and cook until tender, 15-20 minutes. Drain.
Melt the butter in the half-and-half over medium-low heat.
Place potatoes in the bowl of a mixer. Use the paddle attachment on low speed to mash the potatoes.
Slowly add the butter and half-and-half mixture, sour cream, and salt and pepper to taste. Mix until mashed but not smooth.
For the gravy
Saute the butter and onions over medium-low heat in a large saute pan, about 12-15 minutes, or until the potatoes are lightly browned. (Make sure they are browned. If it takes longer than 15 minutes, so be it. Don't rush it!)
Whisk the flour into the pan and add salt and pepper. Cook for another 2-3 minutes, stirring.
Add the chicken stock and cook another 4-5 minutes, until thickened.