Mikael Lustig gave the Swedes the lead after 30 minutes, firing home from the narrowest of angles as he cut in from the right touchline.
Sweden captain Ibrahimovic then missed a penalty two minutes before the end of the first half, firing the spot-kick straight at the keeper after being hauled down on the counter-attack.
Ibrahimovic made amends in the 81st minute, setting up Sebastian Larsson for a simple finish.
Alexandru Suvorov finally got one back for Moldova in added time, rifling a right-footed volley past Andreas Isaksson.
Sweden moved up to second in Group E with nine points from four games, six points behind leaders Netherlands, who play Hungary on Tuesday. Moldova have six points from five matches.
Suvorov had gone close twice in quick succession with a pair of first-half free-kicks.
Sweden had a couple of good chances in the second half but the front pairing of Ibrahimovic and Johan Elmander failed to find the target despite creating some excellent opportunities.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.