I would use a vector that I call angularVelocity where the direction the vector is pointing represents the axis of rotation (orbital axis, in your case) and the magnitude represents the angular change per second. I can feed that vector to a matrix that is set up to perform an axis, angle rotation. All that is left is to offset this mechanism by the point that you want to orbit around.
In pseudo code, it would look like this to orbit the moon around the earth assuming the sun was the gameworld origin:
angularVelocity = /*arbitrary*/ new Vector(0, 1, 0) * 3.14; //orbits 2 rev/sec
Matrix rotation = CreateARotationMatrix(angularVelocity);
moonPosition = ((moonPosition - earthPosition) * rotation) + earthPosition; //assuming your code library has a way to transform a vector by a matrix there.
public Matrix CreateARotationMatrix(Vector av)
float angle = av.Length();
Vector axis = av.Normalize;
axisAngle4d.X = av.X;
axisAngle4d.Y = av.Y;
axisAngle4d.Z = av.Z;
axisAngle4d.W = angle * elapsedTimeSinceLastFrame;
//plug above into code found here to finish matrix: [http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToMatrix/index.htm]
The speed that the object orbits (the mood in our case here) can be related directly to whatever linear velocity you want by factoring in the orbital radius.
Note: You only have to build that matrix once, not every frame, unless the axis or the angular rate changes.