I resolved it by giving each object an Update() method and an AfterUpdate() method. The problem you have is that the sprite position update is happening at the same time you apply a force to it. The force isn't actually applied, however, until
the PhysicsSimulator update. This causes the Sprites position to be updated at the old position, then the body and geom are moved, then you draw.
Here is an example of my Update code:
physicsSimulator.Update(gameTime.ElapsedGameTime.Milliseconds * .001f);
Then, my player1 object has these methods:
public void Update(GameTime gameTime)
public void AfterUpdate(GameTime gameTime)
Sprite.Position = PhysicsBody.Position;
Sprite.Rotation = PhysicsBody.Rotation;
Alternatively, you can add the Sprite position and rotation update to the beginning of your objects Draw method (instead of having an afterupdate method).